【转载】string字符串分割

昨天在处理数据的时候需要对字符串进行分割提取信息,于是查阅了一些资料,发现一篇博文总结的很全面。于是转载了过来,稍有修改。

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)
返回值:子字符串

示例代码如下:

输出结果:

2.使用strtok函数

C中的字符串分割函数
原型: char *strtok(char *str, const char *delim);
功能:分解字符串为一组字符串。
参数说明:str为要分解的字符串,delim(delimiter缩写,分隔符、定界符)为分隔符字符串。
返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。
其它:strtok函数线程不安全,可以使用strtok_r替代

WARNING:第一种方法分割字符串时,pattern只是一个分隔符。而strtok可以实现多于一个分隔符的情况——如果传入delim的是一个字符串,则传入的字符串中的每个字符均为分隔符。

其他相关信息:Linux内核2.6.29后,这个函数不再使用了,由速度更快的strsep()代替。

3.boost库split函数

参考:http://www.cnblogs.com/MikeZhang/archive/2012/03/24/mysplitfuncpp.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注