通过string::find_first_of()函数找到分割标志在字符串中的位置
string::substr()截取string中的字符串
代码
//功能:通过指定的分隔符分割字符串
//参数1 源字符串
//参数2 被分割后的字符串容器引用
//参数3 分割符号
void split_string(string srcStr,vector<string> &v_splitStr,string splitSymbol){
//清空容器
vector<string>().swap(v_splitStr);
while(string::npos != srcStr.find_first_of(splitSymbol)){
//获取第一个分隔符之前的文件类型
string strT = srcStr.substr(0,srcStr.find_first_of(splitSymbol));
//将分割的字符加入到容器列表最后
v_splitStr.push_back(strT);
//删除分割字符前面的,保留后面的字符串
srcStr = srcStr.substr(srcStr.find_first_of(splitSymbol)+1,srcStr.size());
}
//最后的一个分割符号后面或者没有匹配到分割符号的字符加入容器列表
v_splitStr.push_back(srcStr);
}
测试
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//功能:通过指定的分隔符分割字符串
//参数1 源字符串
//参数2 被分割后的字符串容器引用
//参数3 分割符号
void split_string(string srcStr,vector<string> &v_splitStr,string splitSymbol){
//清空容器
vector<string>().swap(v_splitStr);
while(string::npos != srcStr.find_first_of(splitSymbol)){
//获取第一个分隔符之前的文件类型
string strT = srcStr.substr(0,srcStr.find_first_of(splitSymbol));
//将分割的字符加入到容器列表最后
v_splitStr.push_back(strT);
//删除分割字符前面的,保留后面的字符串
srcStr = srcStr.substr(srcStr.find_first_of(splitSymbol)+1,srcStr.size());
}
//最后的一个分割符号后面或者没有匹配到分割符号的字符加入容器列表
v_splitStr.push_back(srcStr);
}
int main(int argv,char* argc[]){
string strTest = "hello,1;2;3;4;aaa,def";
vector<string> v_splitStr;
//指定分割符号, ;
split_string(strTest,v_splitStr,",;");
cout<<"分割后的字符串"<<endl;
for(vector<string>::iterator iter = v_splitStr.begin();iter != v_splitStr.end();iter++){
cout<<*iter<<endl;
}
return 0;
}
效果
