通常我按如下方式编写一个控制循环: 进入向量nVec写入的循环,直到输入“完成”。
while (cin >> sString){
if (sString="done")
{
break;
}
nVec.push_back(sString);
}
这样可以正常工作,但是如果我想在用户输入任何内容(只需按下回车键)后结束循环,我该如何做呢?
答案 0 :(得分:1)
你不能在你的令牌提取中“不输入任何东西”。循环停止的唯一方法是让用户发送文件结束(Linux上的Ctrl-D)。我个人会说这是正确的行为,但是如果你想以空输入结束,你需要读取行:
Sales_item total;
for (std::string line; std::getline(std::cin, line); )
{
if (line.empty()) { exit_program(); /* or "break" */ }
std::istringstream iss(line);
for (Sales_item book; iss >> book; )
{
total += book;
std::cout << "The current total is " << total << std::endl;
}
}
这样,您可以将每一行标记为可能多本书。如果你只想要每行一本书,请撕掉内循环,然后说出std::istringstream(line) >> book;
。