因为C++没有类似Python,Java那样的split函数,所以需要自己实现字符串分割。
可以先将string类型转换成char数组,然后使用C语言的strtok函数,进行字符串分割:
#include<stdio.h> #include<string.h> int main() { char s[]="a,b,c,d"; const char *key=","; char *p; p=strtok(s,key); while(p) { printf("%s\n",p); p=strtok(NULL,key); } printf("\n"); return 0; }上面代码将字符串”a,b,c,d”分割成a b c d四个子串。
自己写一个split函数,把string的子串分到一个string类型的vector里面。
#include<iostream> #include<string> #include<vector> using namespace std; void split(const string&s,vector<string>&v,const string&key) { string::size_type pos1=0; string::size_type pos2=s.find(key); while(pos2!=string::npos) { v.push_back(s.substr(pos1,pos2-pos1)); pos1=pos2+key.size(); pos2=s.find(key,pos1); } if(pos1!=s.length()) v.push_back(s.substr(pos1)); } int main() { string s; cin>>s; vector<string>v; split(s,v,","); for(int i=0;i<v.size();i++) cout<<v[i]<<endl; return 0; }