【问题标题】:C++ std::stringstream whitespace at the end of the command命令末尾的 C++ std::stringstream 空格
【发布时间】:2018-05-05 16:38:50
【问题描述】:
 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);
      }
...
}

我的代码看起来像这样,我的问题是,如果用户在此命令后输入空格,最后一个“par_str”会被 push_back 两次。

例子:

输入: “你好 5 5”

字符串向量中的元素: {“你好”、“5”、“5”、“5”}

如何防止这种情况发生?

【问题讨论】:

    标签: c++ string io


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      相关资源
      最近更新 更多