命令末尾的C ++ std :: stringstream空格

时间:2018-05-05 16:38:50

标签: c++ string io

 void Parameters::parseCommand(std::string &input, std::vector<std::string> &params)
    {
      std::string par_str;
      std::stringstream in_str_strm(input);

      while (in_str_strm.good())
      {
        in_str_strm >> par_str;
        params.push_back(par_str);
      }
...
}

我的代码看起来像这样,我遇到的问题是,如果用户在此命令后输入空格,那么最后一个&#34; par_str&#34;被推了两​​次。

示例:

输入: &#34;你好5 5&#34;

String-Vector中的元素: {&#34;你好&#34;,&#34; 5&#34;,&#34; 5&#34;,&#34; 5&#34;}

我该如何防止这种情况?

1 个答案:

答案 0 :(得分:2)

使用in_str_strm >> par_str作为条件。这允许您在输入后检查流,以便在输入失败时不会执行params.push_back(par_str);。请注意,与good()不同的是,如果达到EOF但是读取成功则会转换为true,因此如果输入末尾没有空格,它也会起作用。

while (in_str_strm >> par_str)
{
    params.push_back(par_str);
}