2011-06-18 8 views
8

私はC++ Primer Plusを使用してC++を学び始めましたが、その例の1つに問題があります。指示された本のように、最後にコンソールを閉じるのを防ぐためにcin.get()を含めました。しかし、私が理解していない2つの文を追加しない限り、この例ではそれだけで閉じます。私は、Visual Studio Expressの2010cin.get()をインクルードした後にコンソールが閉じるのはなぜですか?

#include <iostream> 

int main() 
{ 
    int carrots; 

    using namespace std; 
    cout << "How many carrots do you have?" << endl; 
    cin >> carrots; 
    carrots = carrots + 2; 
    cout << "Here are two more. Now you have " << carrots << " carrots."; 
    cin.get(); 
    return 0; 
} 
+0

GetChar();役立つかもしれません ? –

答えて

12
cin >> carrots; 

この行は、その後、次cin.get()によって消費されます入力ストリームに改行トークンを残します。ただ、その前に直接、簡単なcin.ignore()の操作を行います。

cin.ignore(); 
cin.get(); 
6

cin >> carrotsのであなたが整数をtypying後に入力して改行を読んでいない使用しています、とcin.get()は、改行が入力ストリームに残さ読み込み、その後、プログラムは終了します。そういうわけで、コンソールが閉じます。

2
cin >> carrots; 

intを読み取りますが、後ろの改行を残します。

cin.get(); 

改行が読み込まれ、プログラムが終了します。

1
cin >> carrots; 

Enterキーを押した後に整数の入力を取得して改行します。コンソールの終了を回避するための入力を取得した後、

cin.ignore(); 

置き、これを。

関連する問題