使用cin.get()读取字符

时间:2018-04-18 23:00:50

标签: c++ c++11

有人可以向我解释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;

1 个答案:

答案 0 :(得分:1)

EOF / cin.eof()与ASCII / tty EOF字符不同。在这两种情况下,该值仅在上下文中有意义,否则可能实际上不存在。

在Windows上,EOF通过Ctrl + Z发出信号 在* nixen上,用Ctrl + D发出信号。

无论如何都无法将其打印到终端。告诉用户按下正确的键。请记住,EOF的值与输入流中的任何内容完全无关(除非作为有效字符值无法表示)。

在发出EOF信号之前,您看不到任何输出,因为默认情况下,终端输入是行缓冲的。在输入序列中尝试按Enter键以查看效果。如果您希望使用无缓冲输入,那么这是对另一个问题的(长度)答案。