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

时间:2016-09-26 23:13:37

标签: c++ while-loop

#include <iostream>
using namespace std;


int main()
{

    int a ;
    while ( ( a = cin.get() ) != EOF )
    {

       cout << "hi" <<endl;

     } // end while


}

我想知道为什么每次输入一次都会输出两次“hi”。

例如

输入:1 输出:嗨          喜

2 个答案:

答案 0 :(得分:2)

您的输入实际上包含两个字符:字符1后跟换行符。

尝试使用仅包含一个字节的文件内容或不带换行符的单字母字符串,并且只能看到一个"hi"

答案 1 :(得分:1)

添加一行代码以打印a的值。这将有助于您了解程序看到的输入值:

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

如果您的系统使用ASCII值进行char编码,您可以通过查找ASCII table找出输出的含义。