C++ string 字符串分割
考虑到C++中不含有字符串分割函数,往往需要用find 和 substr 来实现分割,比较复杂
我从网上找到一种比较简洁快速的通过C函数 strtok函数来进行字符串分割的方式
strtok()
strtok 函数
- 第一个参数是待分割的字符串(char数组)
- 第二个参数是分割字符(串)pattern,如空格,逗号,等等
strtok 函数 返回一个c风格字符串指针 指向分好的第一个字符串, 需要得到后续的字符串呢,将strtok函数重复调用,同时第一个参数改为NULL即可
详情见代码
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;
};