C++中对字符串进行分割不是像Java一样容易的事情,有下面几种办法:
推荐采用第一种,统一而且能够对逗号等特殊字符做处理
代码如下:
#include
#include
std::string input = "abc,def,ghi";
std::istringstream ss(input);
std::string token;
while(std::getline(ss, token, ',')) {
std::cout << token << '\n';
}
#include
#include
#include
string str = "dog cat cat dog";
char *dup = strdup(str.c_str());
char *token = strtok(dup, " ");
while (token != NULL) {
v.push_back(string(token));
token = strtok(NULL, " ");
}
free(dup);
代码如下:
string str = "dog cat cat dog";
string str2 = str;
while (str2.find(" ") != string::npos) {
int found = str2.find(" ");
v.push_back(str2.substr(0, found));
str2 = str2.substr(found + 1);
}
v.push_back(str2);
代码如下:
std::string str = "abc def ghi";
std::stringstream ss(str);
string token;
while (ss >> token)
{
printf("%s\n", token.c_str());
}
代码如下:
#include
#include
#include
#include
string str = "dog cat cat dog";
istringstream in(str);
vector<string> v;
#include
copy(istream_iterator<string>(in), istream_iterator<string>(), back_inserter(v));
推荐采用第一种,统一而且能够对逗号等特殊字符做处理