为什么while循环使用cin.get()函数输出两次结果?

why does while loop using cin.get() function outputs result twice?

本文关键字:输出 两次 结果 函数 while cin get 为什么 循环      更新时间:2023-10-16
#include <iostream>
using namespace std;

int main()
{
    int a ;
    while ( ( a = cin.get() ) != EOF )
    {
       cout << "hi" <<endl;
     } // end while

}

我想知道为什么每次输入一次,它都会输出两次"hi"。

例如

输入:1输出:hi你好

您的输入实际上由两个字符组成:字符1后面跟着一个换行符。

尝试在只包含一个字节或不带换行符的单字母字符串的文件内容中使用管道,您将只看到一个"hi"

增加一行代码打印a的值。这将帮助您理解程序看到的输入值:

int main()
{
    int a ;
    while ( ( a = cin.get() ) != EOF )
    {
       cout << a << endl;
       cout << "hi" << endl;    
    } // end while    
}

如果您的系统对char编码使用ASCII值,您可以通过查找ASCII表来了解输出的含义。