在命令提示符下结束 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()
从流中删除错误的输入。
这是 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()
从流中删除错误的输入。