Как остановить консольное приложение C ++ от немедленного выхода? - PullRequest
181 голосов
/ 27 марта 2010

В последнее время я пытаюсь выучить C ++ с этого сайта .К сожалению, всякий раз, когда я пытаюсь запустить один из примеров кода, я вижу, что программа открывается примерно на полсекунды, а затем сразу же закрывается.Есть ли способ остановить немедленное закрытие программы, чтобы я мог видеть плоды моих усилий?

Ответы [ 35 ]

135 голосов
/ 27 марта 2010

Если вы используете Visual Studio и запускаете консольное приложение из IDE:

нажатие CTRL-F5 (запуск без отладки) запустит приложение и оставит окно консоли открытым, пока вы не нажмете любую клавишу.

111 голосов
/ 27 марта 2010

Редактировать: Как правильно заметил Чарльз Бэйли в комментарии ниже, это не сработает, если в stdin буферизуются символы, и действительно нет хорошего способа обойти это. Если вы работаете с отладчиком, предлагаемое решение Джона Диблинга , вероятно, является самым чистым решением вашей проблемы.

Тем не менее, я оставлю это здесь, и, возможно, кто-то найдет это полезным. Я часто использовал его для быстрого взлома при написании тестов во время разработки.


В конце вашей функции main вы можете вызвать std::getchar();

Это будет один символ из stdin, что даст вам поведение типа «нажать любую клавишу для продолжения» (если вы действительно хотите сообщение «нажать любую клавишу», вам придется печатать его самостоятельно) .

Вам нужно #include <cstdio> для getchar.

99 голосов
/ 27 марта 2010

Решение Джеймса работает для всех платформ.

В качестве альтернативы Windows вы также можете добавить следующее непосредственно перед возвратом из функции main:

  system("pause");

Это запустит команду pause, которая ждет, пока вы нажмете клавишу, а также отобразит приятное сообщение Press any key to continue . . .

78 голосов
/ 29 января 2011

Если вы используете Microsoft Visual C ++ 2010 Express и столкнулись с проблемой, когда CTRL + F5 не работает для сохранения консоли открытой после завершения программы, взгляните на этот поток MSDN .

Вероятно, ваша IDE настроена на закрытие консоли после запуска CTRL + F5; фактически «пустой проект» в Visual C ++ 2010 по умолчанию закрывает консоль. Чтобы изменить это, сделайте так, как предложил модератор Microsoft:

Пожалуйста, щелкните правой кнопкой мыши по имени вашего проекта и перейдите на страницу Свойства, разверните Свойства конфигурации -> Компоновщик -> Система, выберите Консоль (/ SUBSYSTEM: CONSOLE) в раскрывающемся списке Подсистема. Потому что по умолчанию в пустом проекте это не указано.

18 голосов
/ 27 марта 2010

Я обычно просто ставлю точку останова на закрывающей фигурной скобке main(). Когда конец программы достигнут любыми средствами, наступит точка останова, и вы можете нажать ALT-Tab в окне консоли, чтобы просмотреть вывод.

14 голосов
/ 27 марта 2010

Почему бы просто не запустить программу из консоли, т.е. запустить программу из cmd.exe, если вы используете Windows. Таким образом, окно остается открытым после завершения программы.

[EDIT]: когда я использую KDevelop4, на вкладке в нижней части IDE работает полноценный экземпляр Bash (Linux CLI). Вот что я использую в подобных обстоятельствах.

9 голосов
/ 10 февраля 2013

Перед окончанием кода вставьте эту строку:

system("pause");

Это будет держать консоль, пока вы не нажмете клавишу.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s;
    cout << "Please enter your first name followed by a newline\n";
    cin >> s;
    cout << "Hello, " << s << '\n';
    system("pause"); // <----------------------------------
    return 0; // This return statement isn't necessary
}
8 голосов
/ 17 июня 2012

Звоните cin.get(); 2 раза:

    //...
    cin.get();
    cin.get();
    return 0
}
4 голосов
/ 27 марта 2010

Если вы запускаете свой код из компетентной IDE, такой как Code :: Blocks , IDE будет управлять консолью, которую он использует для запуска кода, оставляя ее открытой, когда приложение закрывается. Вы не хотите добавлять специальный код, чтобы держать консоль открытой, потому что это помешает ее правильной работе, когда вы используете ее по-настоящему вне среды IDE.

3 голосов
/ 27 марта 2010

Хорошо, я предполагаю, что вы работаете в Windows, используя Visual Studio ... почему? Ну, потому что, если вы работаете в какой-то операционной системе Linux, вы, вероятно, запустите ее с консоли.

В любом случае, вы можете добавить дерьмо в конец вашей программы, как предлагают другие, или вы можете просто нажать CTRL + F5 (запуск без отладки), и Visual Studio оставит консоль включенной после завершения.

Другой вариант, если вы хотите запустить версию Debug и не добавлять дерьмо в свой код, это открыть окно консоли (Пуск -> Выполнить -> cmd) и перейти в каталог Debug output . Затем просто введите имя вашего исполняемого файла, и он запустит вашу программу отладки в консоли. Затем вы можете использовать присоединение Visual Studio к процессу или что-то еще, если вы действительно хотите.

...