将字符串拆分为字符串向量的正确方法是什么?分隔符是空格或逗号。
原文由 softwarematter 发布,翻译遵循 CC BY-SA 4.0 许可协议
将字符串拆分为字符串向量的正确方法是什么?分隔符是空格或逗号。
原文由 softwarematter 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我的变体,类似于 PHP 中的爆炸函数,我们提供给定的字符串和分隔符列表。
std::vector< std::string > explode(const std::string& data, const std::string& delimiters) {
auto is_delim = [&](auto & c) { return delimiters.find(c) != std::string::npos; };
std::vector< std::string > result;
for (std::string::size_type i(0), len(data.length()), pos(0); i <= len; i++) {
if (is_delim(data[i]) || i == len) {
auto tok = data.substr(pos, i - pos);
if ( !tok.empty() )
result.push_back( tok );
pos = i + 1;
}
} return result;
}
使用示例
std::string test_delimiters("hello, there is lots of, delimiters, that may be even together, ");
auto dem_res = explode(test_delimiters, " ,"); // space or comma
for (auto word : dem_res) {
std::cout << word << '\n';
} std::cout << "end\n";
输出:
hello
there
is
lots
of
delimiters
that
may
be
even
together
end
原文由 Vitaly Protasov 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
对于空格分隔的字符串,您可以这样做:
输出:
包含逗号和空格的字符串
输出: