如何在C ++中使用stringstream和strtok拆分字符串(提取单词)?

时间:2018-04-25 01:13:16

标签: c++ c++11 c++14

如何在C ++中分割不带stringstreamstrtok的字符串(提取单词)?

我想拆分一个在每个单词之间有多个连续空格的字符串,它可能跨越多行,并且在新行开始之前有空格。

到目前为止,我有这个,但它只能处理一个空格

while (input.compare(word) != 0)
{
   index = input.find_first_of(" ");
   word = input.substr(0,index);
   names.push_back(word);
   input = input.substr(index+1, input.length());
}

谢谢

1 个答案:

答案 0 :(得分:1)

以下是参考资料:

std::string input = "   hello   world   hello    "; // multiple spaces
std::string word = "";
std::vector<std::string> names;

while (input.compare(word) != 0)
{
   auto index = input.find_first_of(" ");
   word = input.substr(0,index);

   input = input.substr(index+1, input.length());

   if (word.length() == 0) {
      // skip space
      continue;
   }

   // Add non-space word to vector
   names.push_back(word);
}

签入Wandbox