C++字符串的分割函数split及⽤法
之前在C#中总⽤到字符串的分割,使⽤系统函数即可,⽐如:
c++string类型string a = "This is a test";
string[] strArray = a.Split(' ');
在C++中string没有直接的分割函数,可以利⽤C的stroke函数封装⼀个分割⽅法:
vector<string> split(const string& str, const string& delim) {
vector<string> res;
if("" == str) return res;
//先将要切割的字符串从string类型转换为char*类型
char * strs = new char[str.length() + 1] ; //不要忘了
strcpy(strs, str.c_str());
char * d = new char[delim.length() + 1];
strcpy(d, delim.c_str());
char *p = strtok(strs, d);
while(p) {
string s = p; //分割得到的字符串转换为string类型
res.push_back(s); //存⼊结果数组
p = strtok(NULL, d);
}
return res;
}
要利⽤分割函数时调⽤如下:
原string是其他C#项⽬的数据传输string
string str1 = "M135buffer.buffer,|M135data.data1,4.22424|M135data.data6,-0.0714111|M135data.data7,-0.53833|M135data.data11,145.569|M135data.d string str2 = "|This is a test!\n";
string str = str1+str2;
printf(str.c_str());
vector<string> AllStr = split(str,"|");
for (int i=0; i<AllStr.size();i++)
{
vector<string> tempStr = split(AllStr[i],",");
if(tempStr.size()>=2)
{
printf("Name:%s Value:%s\n",tempStr[0].c_str(),tempStr[1].c_str());
}
}
运⾏结果如下:
注意:
此split分割函数的第⼆个参数可以不只传⼀个char,可以传⼀个短string,但是函数会按照string中的每个char进⾏分割,类似C#的分割函数的传多个参数str.Split('|',',');
所以:这个分割函数只能按单个char或者多个单独的char来分割,⽽不能按⼀个短string直接分割。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论