0

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

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

}

这很好用,但是如果我希望在用户没有输入任何内容(只是按下回车键)后循环结束,我该怎么做呢?

4

1 回答 1

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;.

于 2012-05-16T18:33:35.717 回答