2012-04-22 15 views
1

をキャンセルするためのスペースを使用すると、この単純な代入のために私のコードです:ここでは単純なループ

(スペース)空白が入力されるまで、ユーザからの文字入力を読み込みますコードを記述します。入力された文字数を印刷します。ユーザは最初の文字として空白を入力することを覚えておいてください。

スペースがループを終了しないのはなぜですか?

#include <iostream> 
using namespace std; 

int main(){ 
char answer; 
int count=1; 


do{ 
    cout << "please enter number " << count; 
    cin >> answer; 
    count++; 

}while(answer!=' '); 
    cout << "you entered " << count-1 << "numbers." << endl; 
    return 0; 
} 
+0

あなただけの代わりにカウント-1 'を' 0で 'count'と印刷' count'を開始することができます。 – chris

+0

'cin >>'は空白をスキップします。 –

答えて

5

cin >>操作は、デフォルトでは空白のすべての種類をスキップします。あなたは空白スキップを無効にするか、代わりにcin.get()を使用するようにループの前cin >> noskipws;を使用することができます。

cin.get(answer); 

あなたがそれらを個別に処理するために持っているので、あなたは、改行やキャリッジリターンは、もはや今はスキップされていないことに注意する必要があります。また、あなたはファイルの終わりに反応するストリームの状態を確認する必要があります

do { 
    cout << "Please enter number " << count << endl; 
    do { 
     cin.get(answer); 
    } while (cin && (answer == '\r' || answer == '\n')); 
    count++; 
} while (cin && answer != ' '); 
+0

ありがとうございました!大きな助け。 – Dicey

+1

@Dicey:参考になった場合は、左側のチェックボタンをクリックしてこれを回答として受け入れることを検討してください:) –

+0

さて、実際には。 #include using namespace std; int main(){ char回答; int count = 1; cin >> noskipws; do { cout << "数字を入力してください" << count << endl; cin >>答え; カウント++; } while(answer!= ''); cout << "" << count-1 << "の数字を入力しました。" << endl; return 0; } 私はこれを入力しました。それはダブルスキップのように始まりました。 は「番号を入力してください」 数は「数3を入力してください数2 を入力してください」1 を入力し nubmerが入力された3 は「数3 を入力してください数4を入力してください」 入力した番号がスペース である「あなたは5つの数字を入力します」 – Dicey

関連する問題