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;
}
get() is used for accessing character array. It includes white space characters. Generally, cin with an extraction operator (>>) terminates when whitespace is found.
getline(char *buffer, int N): It reads a stream of characters of length N into the string buffer, It stops when it has read (N – 1) characters or it finds the end of the file or newline character(\n).
cin is whitespace delimited, so any whitespace (including \n ) will be discarded.
The syntax of the cin object is: cin >> var_name; Here, >> is the extraction operator.
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();
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With