Почему консоль закрывается после того, как я включил cin.get ()? - PullRequest
9 голосов
/ 18 июня 2011

Я только начал изучать C ++, используя C ++ Primer Plus, но у меня возникли проблемы с одним из примеров. Как и указанная книга, в конце я включил cin.get(), чтобы предотвратить закрытие консоли. Тем не менее, в этом случае он по-прежнему закрывается сам по себе, если я не добавлю два cin.get() утверждения, которые я не понимаю. Я использую 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;
}

Ответы [ 4 ]

15 голосов
/ 18 июня 2011
cin >> carrots;

Эта строка оставляет конечный токен новой строки во входном потоке, который затем используется следующим cin.get(). Просто сделайте простой cin.ignore() прямо перед этим:

cin.ignore();
cin.get();
8 голосов
/ 18 июня 2011

Поскольку cin >> carrots не читает символ новой строки, который вы вводите после ввода целого числа, а cin.get() читает символ новой строки, оставленный во входном потоке, и затем программа завершается.Вот почему консоль закрывается.

4 голосов
/ 18 июня 2011
cin >> carrots;

читает int, но оставляет символ новой строки.

cin.get();

читает эту строку, и программа завершается.

2 голосов
/ 25 мая 2014
cin >> carrots;

Получает целочисленный ввод и покидает новую строку после нажатия клавиши ввода.

cin.ignore();

Поместите это после получения входных данных, чтобы избежать выхода из консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...