0

我有一个std::string包含逗号分隔值的值,我需要将这些值存储在一些合适的容器中,例如数组、向量或其他一些容器。是否有任何内置功能可以让我做到这一点?或者我需要为此编写自定义代码?

4

4 回答 4

3

如果您愿意并且能够使用 Boost 库,Boost Tokenizer将非常适合这项任务。

那看起来像:

std::string str = "some,comma,separated,words";
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
boost::char_separator<char> sep(",");
tokenizer tokens(str, sep);
std::vector<std::string> vec(tokens.begin(), tokens.end());
于 2011-06-06T05:12:09.400 回答
2

您基本上需要使用,作为分隔符来标记字符串。这个较早的 Stackoverflow 线程将帮助您。

是另一个相关的帖子。

于 2011-06-06T05:13:24.203 回答
0

我认为标准库中没有任何可用的。我会接近 -

  1. ,使用 . 根据分隔符对字符串进行标记strtok
  2. atoi使用函数将其转换为整数。
  3. push_back向量的值。

如果您对 boost 库感到满意,请查看此线程

于 2011-06-06T05:14:27.543 回答
0

使用 AX 解析器生成器,您可以轻松解析 csv 字符串,例如

std::string input = "aaa,bbb,ccc,ddd";
std::vector<std::string> v; // your strings get here
auto value = *(r_any() - ',') >> r_push_back(v); // rule for single value
auto csv = *(value & ',') & value & r_end(); // rule for csv string
csv(input.begin(), input.end());

免责声明:我没有测试上面的代码,它可能有一些肤浅的错误。

于 2011-06-06T05:24:28.020 回答