【问题标题】:Ending a while loop in command prompt在命令提示符下结束 while 循环
【发布时间】:2022-01-07 04:47:12
【问题描述】:

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

如果数据量未知,下面的循环很有用:

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

这个循环一个接一个地从输入中读取元素,直到 输入中没有更多可用数据。

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

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

【问题讨论】:

  • 在 windows 上按 ctrl-d 在 linux 上按 ctrl-z
  • 您需要在按ctrl+d后按回车才能真正发送输入
  • 非常感谢您的洞察力!

标签: c++ visual-c++


【解决方案1】:

我的问题是我们如何在命令提示符中结束这样的循环,提示符一次输入一个输入?

注意cin >> x; 返回cin。这意味着当你写

while(cin >> x)

你对 x 执行>> 操作,然后检查 cin。

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

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

【讨论】:

    【解决方案2】:

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

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

    需要注意的是,如果你想在这两个选项中再次使用cin,你需要调用clear()来删除错误标志,如果你输入了错误的输入,你需要使用ignore() 从流中删除错误输入。

    【讨论】:

      最近更新 更多