2016-09-26 34 views
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個 輸出:喜 喜

+0

嘗試:'echo -n「1」| 。/ a.out' –

+0

輸出的是字符數+ 1次「hi」 – Naidu

+2

@PavanChandaka:爲什麼+1? Newline也是一個字符,是OP的輸入的一部分......並且_that_是問題! –

回答

2

你的輸入實際上包括字符:後跟一個換行字符1

嘗試在僅包含一個字節的文件的內容中滾動,或者在不包含換行符的單字母字符串的情況下,只會看到一個"hi"

+0

[演示](https://ideone.com/ABk7j2) –

+0

@BaummitAugen:沒問題:-) –

+0

只需選擇「輸入」鍵而無需輸入任何值。你會看到一個「嗨」。這說明你的代碼需要一個「換行符」字符。 – Naidu

1

添加一行代碼以打印a的值。這將幫助你瞭解一下輸入值的程序看:

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

如果你的系統使用的ASCII值char編碼,你可以找出輸出裝置通過查找ASCII table什麼。

相關問題