我正试图以这种方式读取用户的输入
std::string point;
while (std::getline(std::cin, point))
{
// SOME CODE
}
我希望收到用户的输入,直到他点击CTRL + D,这意味着EOF。 显然在目前的情况下我得到一个错误,因为当我按下CTRL + D时它不会结束。有小费吗?谢谢!
答案 0 :(得分:0)
在Windows中, Ctrl + Z 或 F6 在空行上是标记文本结尾的约定流。在Unix-land中, Ctrl + D 是将类型化文本straighaway发送到程序的约定,对于空行不发送任何内容(零长度输入),程序解释为文件结尾。同样在Windows中,解释在每个程序中,而不是由Windows本身或控制台子系统或命令shell完成,对于C和C ++,它由标准库的i / o工具处理。
一个很大的区别是,在Windows中,Ctrl-Z是 数据 ,您可以在其中使用一个文本文件,而在Unix-land中“立即提交!”Ctrl-D是 动作 ,在从文件读取的数据中不会发生。
另一个很大的区别是,因为在Windows中你必须在Ctrl + Z之后按 Return (Enter,换行符),而在Unix-land中,Ctrl-D就是它,在它自己的。