C++ 为什么while循环使用cin.get()函数会输出两次结果? #包括 使用名称空间std; int main() { INTA; 而((a=cin.get())!=EOF) { cout

C++ 为什么while循环使用cin.get()函数会输出两次结果? #包括 使用名称空间std; int main() { INTA; 而((a=cin.get())!=EOF) { cout,c++,while-loop,C++,While Loop,您的输入实际上由两个字符组成:字符1后跟换行符 尝试在只包含一个字节的文件内容中插入管道,或者在不包含换行符的一个字母字符串中插入管道,您将只看到一个“hi”添加一行代码以打印a的值。这将帮助您了解程序看到的输入值: #include <iostream> using namespace std; int main() { int a ; while ( ( a = cin.get() ) != EOF ) { cout <<

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


尝试在只包含一个字节的文件内容中插入管道,或者在不包含换行符的一个字母字符串中插入管道,您将只看到一个
“hi”

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

#include <iostream>
using namespace std;


int main()
{

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

       cout << "hi" <<endl;

     } // end while


}
intmain()
{
INTA;
而((a=cin.get())!=EOF)
{

cout Try:
echo-n“1”./a.out
输出是字符数+1乘以“hi”@PavanChandaka:Why+1?换行符也是字符,是OP输入的一部分…这就是问题所在!
而(cin>>a)我的意思是键入的字符数+1。我的英语不好。@BaummitAugen:没问题:-)只要选择“回车”不输入任何值。您将看到一个“hi”。这说明您的代码使用“换行符”字符。或者在终端仿真器中关闭行缓冲
int main()
{
    int a ;
    while ( ( a = cin.get() ) != EOF )
    {
       cout << a << endl;
       cout << "hi" << endl;    
    } // end while    
}