我是靠谱客的博主 过时纸飞机,最近开发中收集的这篇文章主要介绍C++ 分割字符串两种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原文地址:http://blog.csdn.net/xjw532881071/article/details/49154911

 

字符串切割的使用频率还是挺高的,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) 
返回值:子字符串 
代码如下:

View Code

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

原型:char *strtok(char *str, const char *delim); 
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 
描述:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为 字符。在第一次调用时,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;
}

最后

以上就是过时纸飞机为你收集整理的C++ 分割字符串两种方法的全部内容,希望文章能够帮你解决C++ 分割字符串两种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部