2016-09-26 10 views
1
#include <iostream> 
using namespace std; 


int main() 
{ 

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

     cout << "hi" <<endl; 

    } // end while 


} 

私は一度入力するたびに「hi」を2回出力するのだろうかと思います。例えばなぜcin.get()関数を使用しているwhileループは結果を2回出力しますか?

入力:1つの 出力:HI

+0

試してください: 'echo -n" 1 "| 。/ a.out' –

+0

出力は文字数+ 1回 "hi" – Naidu

+2

@PavanChandaka:なぜ+1ですか?改行もチャプターで、OPの入力の一部です...そして、それは問題です! –

答えて

2

あなたの入力は、実際に文字で構成さ HI:改行が続く文字1

1バイトのみのファイル、または改行のない1文字の文字列の中にパイピングすると、"hi"が1つしか表示されません。

+0

[デモ](https://ideone.com/ABk7j2) –

+0

@BaummitAugen:問題ありません:-) –

+0

任意の値を入力せずに「Enter」キーを選択するだけです。あなたは "hi"を見るでしょう。これはあなたのコードが "改行"文字を取ることを説明しています。 – Naidu

1

aの値を印刷するコード行を追加します。それはあなたが入力プログラムが見る値を理解するのに役立ちます:

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

あなたのシステムがあなたが出力ASCII tableをルックアップすることによって何を意味するのかを調べることができエンコードcharのためのASCII値を使用している場合。

関連する問題