这是一种解析整数并将它们存储在向量中的漂亮方法,只要它们是空格分隔的(从 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));
}
Run Code Online (Sandbox Code Playgroud)
是否可以指定另一个分隔符(例如","),同时保持类似的东西?
您可以使用正则表达式 (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);
}
Run Code Online (Sandbox Code Playgroud)
对于您的示例,要分割“,”传递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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |