有人可以向我解释cin.get()如何在下面工作。我的想法是cin.get()从键盘中获取一个字符(当你输入它时),将它分配给character1,然后将它与EOF进行比较,如果这个比较不相等,则打印它,然后返回到while循环并执行相同操作直到输入EOF字符。我期望看到的是每次输入字符时打印的字符,直到输入EOF,但我很惊讶看到程序接收字符,直到我输入EOF然后打印所有字符。
int character1;
cout << "Before input, cin.eof() is " << cin.eof()<< endl
<< "Enter a sentence followed by end-of-file:" << endl;
while ((character1 = cin.get()) != EOF)
cout.put(character1);
cout << "\nEOF in this system is: " << character << endl;
答案 0 :(得分:1)
EOF / cin.eof()与ASCII / tty EOF字符不同。在这两种情况下,该值仅在上下文中有意义,否则可能实际上不存在。
在Windows上,EOF通过Ctrl + Z发出信号 在* nixen上,用Ctrl + D发出信号。
无论如何都无法将其打印到终端。告诉用户按下正确的键。请记住,EOF
的值与输入流中的任何内容完全无关(除非作为有效字符值无法表示)。
在发出EOF信号之前,您看不到任何输出,因为默认情况下,终端输入是行缓冲的。在输入序列中尝试按Enter键以查看效果。如果您希望使用无缓冲输入,那么这是对另一个问题的(长度)答案。