【问题标题】:Receiving input from user in c++在 C++ 中接收来自用户的输入
【发布时间】:2016-09-03 21:19:13
【问题描述】:

我正在尝试以这种方式读取用户的输入

std::string point;
while (std::getline(std::cin, point))
{
 // SOME CODE
}

我想接收来自用户的输入,直到他按下 CTRL+D,这意味着 EOF。 显然在当前情况下我得到一个错误,因为当我按下 CTRL+D 时它并没有结束。有小费吗?谢谢!

【问题讨论】:

  • 您使用的是什么操作系统?是窗户吗?
  • 是的,我在 Windows 10 上
  • 你好,你用错了EOF,是Ctrl - Z,然后回车。
  • 我被CTRL+D告知要结束阅读,这不是我真正想要的.. :/
  • 一个 Linux 人告诉过你(这里也有解释:stackoverflow.com/questions/19228645/…)。你正在使用窗户。您必须遵循 Arnav 的建议:ctrl+Z + return。也就是说,MSYS cat 命令对 CTRL+D 做出反应。我想知道它是如何工作的......

标签: c++ string windows


【解决方案1】:

在 Windows 中,Ctrl+ZF6 在空行上是标记文本文件结尾的约定溪流。在 Unix-land 中,Ctrl+D 是将键入的文本直接发送到程序的约定,对于空行,它不发送任何内容(零长度输入),程序解释为文件结束。同样在 Windows 中,解释在每个程序中,而不是由 Windows 本身或控制台子系统或命令 shell 完成,对于 C 和 C++,它由标准库的 i/o 设施处理。

一个很大的不同是,在 Windows 中,Ctrl-Z 是 data,您可以在例如一个文本文件,而在 Unix-land 中是“立即提交!” Ctrl-D 是一个动作,不会发生在从文件读取的数据中。

另一个很大的区别是,因此,在 Windows 中,您必须在 Ctrl+Z 之后按 Return(回车,换行符),而在 Unix-land 中,Ctrl-D 是自己的。

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 2017-05-21
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多