2011-06-06 77 views
0

我有一个包含逗号分隔值的std::string,我需要将这些值存储在某个合适的容器中,例如数组,矢量或其他容器。有什么内置的功能,我可以做到这一点?或者我需要为此编写自定义代码?C++:在特定条件下存储CSV

回答

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()); 
2

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

Here是另一个相关的帖子。

0

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

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

如果您对助推库,check this thread感到满意。

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()); 

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