这是一种解析整数并将它们存储在向量中的漂亮方法,前提是它们是空格分隔的(来自Split a string in C++?):
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
int main() {
using namespace std;
string s = "3 2 1";
istringstream iss(s);
vector<int> tokens;
copy(istream_iterator<int>(iss),
istream_iterator<int>(),
back_inserter<vector<int> >(tokens));
}
是否可以指定另一个分隔符(例如“,”),同时保持类似的东西?
答案 0 :(得分:1)
您可以使用正则表达式(C ++ 11)来概括字符串拆分。这个函数通过在正则表达式上将它分割来标记你的字符串。
vector<string> split(const string& input, const regex& regex) {
sregex_token_iterator
first(input.begin(), input.end(), regex, -1),
last;
return vector<string>(first, last);
}
对于您的示例,要拆分','将regex(",")
传递给函数。
#include <iostream>
#include <string>
#include <regex>
#include <vector>
using namespace std;
vector<string> split(const string& input, const regex& regex) {
sregex_token_iterator
first(input.begin(), input.end(), regex, -1),
last;
return vector<string>(first, last);
}
int main() {
const regex r = regex(",");
const string s = "1,2,3";
vector<string> t = split(s, r);
for (size_t i = 0; i < t.size(); ++i) {
cout << "[" << t[i] << "] ";
}
cout << endl;
return 0;
}