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

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

Ответы [ 35 ]

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

Если вы на самом деле отлаживаете свое приложение в Visual C ++, нажмите F5 или зеленый треугольник на панели инструментов. Если вы на самом деле не отлаживаете его (у вас нет установленных точек останова), нажмите Ctrl + F5 или выберите «Пуск без отладки» в меню (обычно это меню «Отладка», что, я согласен, сбивает с толку.) Это будет немного быстрее, и, что более важно для вас, в конце остановится, и вам не придется менять код.

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

2 голосов
/ 18 мая 2015

Для Visual Studio (и только для Visual Studio) следующий фрагмент кода дает вам приглашение «ждать нажатия клавиши для продолжения», которое действительно ожидает, когда пользователь явно нажмет клавишу new , сначала сбросив входной буфер:

#include <cstdio>
#include <tchar.h>
#include <conio.h>

_tprintf(_T("Press a key to continue "));
while( _kbhit() /* defined in conio.h */ ) _gettch();
_gettch();

Обратите внимание, что здесь используется макрос tchar.h для совместимости с несколькими «наборами символов» (как их называет VC ++).

2 голосов
/ 04 октября 2011

Просто добавьте следующее в конце вашей программы.Он попытается отразить какую-либо форму ввода пользователя, таким образом, он останавливает автоматическое закрытие консоли.

cin.get();
2 голосов
/ 11 декабря 2015

Я просто делаю это:

//clear buffer, wait for input to close program
std::cin.clear(); std::cin.ignore(INT_MAX, '\n');
std::cin.get();
return 0;

Примечание: очистка буфера cin и это необходимо, только если вы использовали cin ранее в вашей программе. Также использование std :: numeric_limits :: max (), вероятно, лучше, чем INT_MAX, но это немного многословно и обычно не нужно.

2 голосов
/ 14 февраля 2017

Используйте #include "stdafx.h" & system("pause"); так же, как код ниже.

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    std::cout << "hello programmer!\n\nEnter 2 numbers: ";
    int x, y;
    std::cin >> x >> y;
    int w = x*y;
    std::cout <<"\nyour answer is: "<< w << endl;
    system("pause");
}
2 голосов
/ 28 марта 2010

Добавьте следующие строки перед любой exit() функцией или перед любой return s в main():

std::cout << "Paused, press ENTER to continue." << std::endl;
cin.ignore(100000, "\n");
2 голосов
/ 05 апреля 2017
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{

    cout << "Press any key to continue...";
    getch();

    return 0;
}

Я не заметил, чтобы кто-то еще опубликовал это, вот оно.

1 голос
/ 19 марта 2017

Идея похожа на да ответ, просто минималистская альтернатива.

Создайте командный файл со следующим содержимым:

helloworld.exe
pause

Затем используйте командный файл.

0 голосов
/ 28 марта 2010

Вы также можете придерживаться

while(true)
    ;

или

for(;;)
    ;

в конце.

0 голосов
/ 18 декабря 2014

Я ставлю точку останова на последнем возврате 0 программы. Работает нормально.

...