FlowofSoul
FlowofSoul

Reputation: 510

Why is the Console Closing after I've included cin.get()?

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

Answers (4)

Bo Persson
Bo Persson

Reputation: 92271

cin >> carrots;

reads an int but leaves a newline behind.

cin.get();

reads that newline, and the program ends.

Upvotes: 4

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

Xeo
Xeo

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

Sarfaraz Nawaz
Sarfaraz Nawaz

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

Related Questions