【发布时间】:2017-07-07 17:32:49
【问题描述】:
我通常使用 sregex_token_iterator 以防拆分文本
vector<string> split(const string& input, const string& reText) {
regex re(reText);
sregex_token_iterator first{input.begin(), input.end(), re, -1}, last;
return {first, last};
}
auto text = string(" hello world, hi every one");
auto delimiters = string("[\\s,]+");
auto arr = split(text, delimiters);
copy(begin(arr), end(arr), ostream_iterator<string>(cout, "\n"));
但是,标题空格“”的结果是,
{"", "hello", "world", "hi", every", "one" }
所以,我通常手动删除标题“”空字符串。
if (arr.size() > 0 && arr[0].empty()) arr.erase(arr.begin());
有更好的主意吗?
【问题讨论】:
-
您可以在拆分之前修剪字符串。这样你就不会有前导/尾随空格了。