#include <iostream>
using namespace std;
int main()
{
int a ;
while ((a = cin.get()) != EOF)
{
cout << "hi" <<endl;
} // end while
}
我不知道爲什麼每次輸入一次輸出「hi」兩次。爲什麼while循環使用cin.get()函數輸出兩次結果?
例如
輸入:1個 輸出:喜 喜
#include <iostream>
using namespace std;
int main()
{
int a ;
while ((a = cin.get()) != EOF)
{
cout << "hi" <<endl;
} // end while
}
我不知道爲什麼每次輸入一次輸出「hi」兩次。爲什麼while循環使用cin.get()函數輸出兩次結果?
例如
輸入:1個 輸出:喜 喜
你的輸入實際上包括字符:後跟一個換行字符1
。
嘗試在僅包含一個字節的文件的內容中滾動,或者在不包含換行符的單字母字符串的情況下,只會看到一個"hi"
。
[演示](https://ideone.com/ABk7j2) –
@BaummitAugen:沒問題:-) –
只需選擇「輸入」鍵而無需輸入任何值。你會看到一個「嗨」。這說明你的代碼需要一個「換行符」字符。 – Naidu
添加一行代碼以打印a
的值。這將幫助你瞭解一下輸入值的程序看:
int main()
{
int a ;
while ((a = cin.get()) != EOF)
{
cout << a << endl;
cout << "hi" << endl;
} // end while
}
如果你的系統使用的ASCII值char
編碼,你可以找出輸出裝置通過查找ASCII table什麼。
嘗試:'echo -n「1」| 。/ a.out' –
輸出的是字符數+ 1次「hi」 – Naidu
@PavanChandaka:爲什麼+1? Newline也是一個字符,是OP的輸入的一部分......並且_that_是問題! –