C++ C++;std::stringstream命令末尾的空白 void参数::parseCommand(std::字符串和输入,std::向量和参数) { std::string par_str; std::STRINGSTRM中的stringstream(输入); while(in_str_strm.good()) { 在街上>>公园街; 参数推回(par_str); } ... }

C++ C++;std::stringstream命令末尾的空白 void参数::parseCommand(std::字符串和输入,std::向量和参数) { std::string par_str; std::STRINGSTRM中的stringstream(输入); while(in_str_strm.good()) { 在街上>>公园街; 参数推回(par_str); } ... },c++,string,io,C++,String,Io,我的代码是这样的,我的问题是,如果用户在这个命令之后输入空格,最后一个“par_str”会被向后推两次 例如: 输入: “你好,55” 字符串向量中的元素: {“你好”、“5”、“5”、“5”} 我如何防止这种情况发生?使用作为条件。这允许您在输入后检查流,以便参数推回(par_str)将不会执行。注意:与good()不同,如果达到EOF但读取成功,它将转换为true,因此如果输入端没有空格,它也可以工作 void Parameters::parseCommand(std::string &a

我的代码是这样的,我的问题是,如果用户在这个命令之后输入空格,最后一个“par_str”会被向后推两次

例如:

输入: “你好,55”

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


我如何防止这种情况发生?

使用
作为条件。这允许您在输入后检查流,以便
参数推回(par_str)将不会执行。注意:与
good()
不同,如果达到EOF但读取成功,它将转换为
true
,因此如果输入端没有空格,它也可以工作

 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);
      }
...
}
while (in_str_strm >> par_str)
{
    params.push_back(par_str);
}