【问题标题】:split string containing many whitespace in c++在c ++中拆分包含许多空格的字符串
【发布时间】:2016-04-10 12:24:41
【问题描述】:

如何拆分包含许多空格的字符串。例如这个字符串(它是来自文本文件的行) 12 145 ready

我使用旧版本的 C++(我没有 c++11),但我不知道我该怎么做!。我试过了

stringstream(line.substr(positionOfElement,string::npos))
stringstream(line.substr(positionOfElement,string::npos))

这是可行的,但对我不利,因为我需要知道元素在我的字符串中的位置。有简单的方法吗?

【问题讨论】:

  • 使用std::istringstreamoperator>>()
  • 由于您需要知道每个标记的位置,我建议您循环遍历字符,并在每次找到紧接在空白之前的非空白时存储和索引或指针。跨度>

标签: c++ file split line


【解决方案1】:

感谢您的回答。我找到了答案,并像这样解决我的问题:

string line("124       24    ready");
istringstream iss(line);
vector<string> tokens;
       copy(istream_iterator<string>(iss),
            istream_iterator<string>(),
            back_inserter(tokens));

【讨论】:

  • 你可以使用 std::vector 的 ctor 来缩短你的解决方案,它需要两个迭代器:vector&lt;string&gt; tokens(istream_iterator&lt;string&gt;(iss), istream_iterator&lt;string&gt;());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多