使用 cin.get() 读取字符

The use of cin.get() to read a character(s)

本文关键字:读取 字符 cin get 使用      更新时间:2023-10-16

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

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

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

无论哪种方式,您都无法将其打印到终端。告诉用户按正确的键。请记住,EOF 的值与输入流中的任何内容完全无关(除了不能表示为有效字符值(。

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