一. 使用stringstream和getline结合方式
#ifndef STRING_SPLIT_H
#define STRING_SPLIT_H
#include <iostream>
#include <vector>
#include <sstream>
//引入命名空间
using namespace std;
//定义成员
vector<string> split(const char *src,const char delimit);
#endif
#include "csplit.h" //csplit.h是上面定义的头文件
vector<string> split(const char *src,const char delimit);
{
stringstream ss(src);
string sub_str;
vector<string> vec;
while(getline(ss,sub_str,'|'))
{
cout << sub_str << endl;
vec.push_back(sub_str);
}
return vec;
}
二、使用c语言中的strtok()方法
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int main()
{
vector<string> vec;
string str("a|b|c d");
//因为是运行时确定大小,所以必须从堆分配内存,然后用指针指向它
char *buf = new char[str.length()+1];
//strcpy方法需要的是二个字符串指针,而不是string类型,所以c_str方法就能完成从字符串向字符指针的转换
strcpy(buf,str.c_str());
buf[str.length()] = '\0';
char *tmp;
tmp = strtok(buf,"| ");
while(tmp != NULL)
{
vec.push_back(tmp);
tmp = strtok(NULL,"| ");
}
cout << vec.size() << endl;
delete []buf;
return 0;
}