void Parameters::parseCommand(std::string &input, std::vector<std::string> ¶ms)
{
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;}
我该如何防止这种情况?
答案 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);
}