在命令提示符下结束 while 循环

Ending a while loop in command prompt

这是 Antti Laaksonen Competitive Programmer's Handbook 的摘录:

If the amount of data is unknown, the following loop is useful:

while (cin >> x) {
// code
}

This loop reads elements from the input one after another, until there is no more data available in the input.

我的问题是我们如何在命令提示符中结束这样一个循环,提示符一次接受一个输入?通过按 enter,提示要求新的输入而不是终止输入。

编辑:我试过使用 ctrl + D/Z 但我得到这个:

My question is how do we end such a loop in the command prompt, where the prompt takes one input at a time?

请注意 cin >> x; returns cin。这意味着当你写

while(cin >> x)

你对 x 执行 >> 操作,然后 check cin.

当用户输入type 与变量x的类型不同的输入时,此while循环将自动结束。这是因为 cin 将不再处于有效状态,因此 cin >> x 将变为 false 。基本上,当流的状态设置为失败时,循环结束。比如提供不同的类型值或遇到 EOF 时。

还有其他方法可以通过使用 break 从 while 块内部结束此类循环。

为了结束该循环,cin 需要进入失败状态。这将导致它评估为 false 并停止循环。你有几种方法可以做到这一点。首先是发送错误的输入,这将导致 cin 失败并结束循环。因为你排除了整数,你可以只输入一个字母,这会导致它中断。

另一种选择是将 EOF(文件结束)信号发送到 cin 您可以使用 ctrl+D (windows) 或 ctrl+Z (linux) 并按回车键。 cin 会在看到达到 EOF 后停止读取,并且会进入失败状态并导致循环结束。

应该注意的是,对于这两个选项,如果您想在执行此操作后再次使用 cin,您将需要调用 clear() 来删除错误标志,如果您输入错误的输入,您需要使用 ignore() 从流中删除错误的输入。