我只想将输入的字符串拆分为字符串向量。我有两个问题:
这是我的代码:
std::string input;
std::string buffer;
std::vector<std::string> params;
std::cout << "Input: " ;
std::getline(std::cin, input);
std::istringstream stream;
stream.str(input);
while(!(stream.eof()))
{
stream >> buffer;
params.push_back(buffer);
}
// printing content of params
for (int i = 0; i <params.size(); i++)
{
std::cout << "Params :" << params[i] << std::endl;
}
std::cout << params.size() << std::endl;
我认为问题可能是暂时的情况。
如果你能给我任何帮助,我将不胜感激。
答案 0 :(得分:4)
这里的问题是你的循环从字符串流中提取字符串,而while (!stream.eof())
无法正常工作。原因是,在之后尝试从流的末尾读取之后,才会设置eofbit
标志。即使输入为空,这也会导致您循环遍历循环,并且您将再次迭代输入中的单词数量,将最后一个单词两次添加到向量中。
取而代之的是
while (stream >> buffer)
params.push_back(buffer);