Reputation: 510
I've just started learning C++ using C++ Primer Plus but I'm having trouble with one of the examples. Like the book instructed I included cin.get()
at the end to prevent the console from closing by itself. However, in this instance it still closes by itself unless I add two cin.get()
statements which I don't understand. I'm using Visual Studio Express 2010.
#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;
}
Upvotes: 9
Views: 6639
Reputation: 92271
cin >> carrots;
reads an int
but leaves a newline behind.
cin.get();
reads that newline, and the program ends.
Upvotes: 4
Reputation: 89
cin >> carrots;
Gets an integer input and leaves a new line after pressing enter key.
cin.ignore();
Place this after getting inputs to avoid the exit of console.
Upvotes: 2
Reputation: 131799
cin >> carrots;
This line leaves a trailing newline token in the input stream, which then gets consumed by the next cin.get()
. Just do a simple cin.ignore()
directly before that:
cin.ignore();
cin.get();
Upvotes: 15
Reputation: 361492
Because cin >> carrots
doesn't read the newline which you enter after typying the integer, and cin.get()
reads the newline left in the input stream, and then the program ends. That is why the console closes.
Upvotes: 8