没有输入任何内容时结束循环

时间:2012-05-16 18:19:23

标签: c++

通常我按如下方式编写一个控制循环: 进入向量nVec写入的循环,直到输入“完成”。

while (cin >> sString){
    if (sString="done")
    { 
        break;
    }
    nVec.push_back(sString);

}

这样可以正常工作,但是如果我想在用户输入任何内容(只需按下回车键)后结束循环,我该如何做呢?

1 个答案:

答案 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;