字符串切割的使用频率还是挺高的,string本身没有提供切割的方法,但可以使用stl提供的封装进行实现或者通过c函数strtok()函数实现。

1、通过stl实现

涉及到string类的两个函数find和substr:
1、find函数
原型:size_t find ( const string& str, size_t pos = 0 ) const;
功能:查找子字符串第一次出现的位置。
参数说明:str为子字符串,pos为初始查找位置。
返回值:找到的话返回第一次出现的位置,否则返回string::npos

2、substr函数
原型:string substr ( size_t pos = 0, size_t n = npos ) const;
功能:获得子字符串。
参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos)
返回值:子字符串
代码如下:

std::vector<std::string> splitWithStl(const std::string &str,const std::string &pattern)
{std::vector<std::string> resVec;if ("" == str){return resVec;}//方便截取最后一段数据std::string strs = str + pattern;size_t pos = strs.find(pattern);size_t size = strs.size();while (pos != std::string::npos){std::string x = strs.substr(0,pos);resVec.push_back(x);strs = strs.substr(pos+1,size);pos = strs.find(pattern);}return resVec;
}

2、通过使用strtok()函数实现

原型:char *strtok(char *str, const char *delim);
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
描述:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。

其它:strtok函数线程不安全,可以使用strtok_r替代。
代码如下:

vector<string> split(const string &str,const string &pattern)
{//const char* convert to char*char * strc = new char[strlen(str.c_str())+1];strcpy(strc, str.c_str());vector<string> resultVec;char* tmpStr = strtok(strc, pattern.c_str());while (tmpStr != NULL){resultVec.push_back(string(tmpStr));tmpStr = strtok(NULL, pattern.c_str());}delete[] strc;return resultVec;
}

分割字符串,逗号分隔相关推荐

  1. c语言 字符串分隔,c语言字符串分割–strtok | 逗号分隔-huangea的博客

    c语言字符串分割–strtok | 逗号分隔 代码,原理是使用字符串分隔函数 Strtok()函数详解: 该函数包含在"string.h"头文件中 函数原型: char* strt ...

  2. 如何分割字符串以便可以访问项目x?

    使用SQL Server,如何分割字符串以便可以访问项x? 取一个字符串" Hello John Smith". 我如何按空格分割字符串并访问索引1的项目,该项目应返回" ...

  3. scala 拆分字符串翻转_Scala程序分割字符串

    scala 拆分字符串翻转 A string is a collection that stores multiple characters, it is an immutable sequence ...

  4. js长度超过1逗号分开_js怎么用逗号或者换行分割字符串

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:js怎么用逗号或者换行分割字符串回答:使用split()分割 str="2,2,3,5,6,6": 这是一字符串 var strs= ...

  5. jquery中如何以逗号分割字符串_百度知道

    jquery中如何以逗号分割字符串_百度知道javascript本身就是带split方法的 定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.spli ...

  6. c语言以空格分割字符串_C语言: 利用sscanf() 函数分割字符串

    头文件:#include sscanf()函数用于从字符串中读取指定格式的数据,其原型如下: int sscanf (char *str, char * format [, argument, ... ...

  7. python字符串按长度分割_python 按照固定长度分割字符串的方法小结

    有如下的一堆mac地址,需要更改成一定格式,如mac='902B345FB021'改为mac='90-2B-34-5F-B0-21'. 借助python脚本,可以轻松实现,原理就是:字符串的按照固定长 ...

  8. B00009 C语言分割字符串库函数strtok

    切割字符串是常用的处理. 这里给出一个使用函数strtok切割字符串的例子. 使用C语言的库函数strtok来切割字符串的好处在于,可以指定任意字符作为分隔符来切割单词.使用该函数,切割字符串的分隔符 ...

  9. R语言使用str_split函数和str_split_fixed函数将字符串分割(分裂、split)成几个部分:str_split函数使用指定的字符或者字符串分割字符串、str_split_fixed

    R语言使用str_split函数和str_split_fixed函数将字符串分割(分裂.split)成几个部分:str_split函数使用指定的字符或者字符串分割字符串.str_split_fixed ...

最新文章

  1. 1微秒等于多少皮秒_1分钟了解,1皮秒到底有多短!
  2. C#写webservice(2)
  3. orcale 非非等于_oracle 不等于1怎么查?
  4. Ajax Toolkit Control ——CollapsiblePanelExtender(隐藏显示效果)
  5. php 返回map,PHP Ds\Map get()用法及代码示例
  6. 【小菜日志】用C#完成Allen Lee's Magic大虾推荐的F#作业F#学习中
  7. Effective C++ ------- virtual
  8. mongo执行逻辑表达式_MongoDB 常用查询操作
  9. Linux NULL定义
  10. js正则限制字符串长度_正则笔记(3)万字长文,慎点。
  11. FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询
  12. 8中间件,csrf跨站请求伪造,auth模块
  13. airflow时区问题
  14. OSPF基础配置命令
  15. 大华C++客户端面经
  16. labview入门到出家11(补充)——基于单片机和labview开发的虚拟示波器
  17. coap python_Python coap
  18. 在VisualStudio中使用EF操作Firebird数据库
  19. matlab画图nan,在Matlab中过滤包含NaN的图像?
  20. 简述:为什么硅胶按键要使用镭雕工艺?

热门文章

  1. 卷积神经网络应用(虹膜识别)
  2. 正则表达式匹配邮箱 php,php中匹配邮箱地址正则表达式
  3. 赢得值系列1:赢得值管理的历史
  4. 显示器点距 测试软件,液晶显示器的点距是怎么计算的
  5. SQL中求最小值的简便方法
  6. 产品数据管理(PDM)技术与应用
  7. 访美观感之一:第一印象 2010.6.16.
  8. Android手机中国移动网络接入点设置
  9. 编译git时,make报错:zlib.h: No such file or directory
  10. 实现在线查看PDF文件