Как сохранить окно консоли открытым в Visual C ++? - PullRequest
180 голосов
/ 18 января 2009

Я начинаю с Visual C ++ и хотел бы знать, как сохранить окно консоли.

Например, это будет типичное приложение "hello world":

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World";
    return 0;
}

Какую черту я пропускаю?

Ответы [ 21 ]

1 голос
/ 18 октября 2016

Мои 2 цента:

Вариант 1: Добавить точку останова в конце main()

Вариант 2: Добавьте этот код прямо перед return 0;:

std::cout << "Press ENTER to continue..."; //So the User knows what to do
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Вам необходимо включить <iomanip> для std::numeric_limits

1 голос
/ 11 января 2014

Была такая же проблема. Я использую _getch() непосредственно перед оператором возврата. Это работает.

1 голос
/ 30 марта 2013

Я включаю #include <conio.h>, а затем добавляю getch(); непосредственно перед строкой return 0;. Это то, чему я научился в школе. Методы, упомянутые выше, совершенно другие, я вижу.

1 голос
/ 30 июня 2009

cin.get() или system("PAUSE"). Я не слышал, что вы можете использовать return(0);

0 голосов
/ 12 апреля 2019
int main()
{
    //...
    getchar();
    return 0;
}
0 голосов
/ 05 марта 2018

Вот способ сохранить командное окно открытым независимо от того, как выполнение останавливается без изменения какого-либо кода:

В Visual Studio откройте Страницы свойств проекта -> Отладка .

Для Команда , введите $(ComSpec)

Для Аргументы команды , введите /k $(TargetPath). Добавьте любые аргументы в ваше собственное приложение.

Теперь F5 или Ctrl-F5 выполняет Windows / System32 / cmd.exe в новом окне и / k обеспечивает что командная строка остается открытой после завершения выполнения.

Недостатком является то, что выполнение не остановится на точках останова.

0 голосов
/ 27 февраля 2018

На самом деле реальным решением является выбор самого шаблона проекта. Вы ДОЛЖНЫ выбрать Консольное приложение Win32 в более старой версии VS или сначала ввести имя проекта, а затем дважды щелкнуть мастер Windows Desktop и затем выбрать консольное приложение Win32. Затем выберите пустой проект в этой точке. Это позволяет учесть то, что действительно хотел первоначальный спрашивающий, без добавления дополнительной точки остановки и удержания кода. Я также прошел через эту проблему. Ответ также на сайте MSDN.

0 голосов
/ 15 октября 2017

Другой вариант:

#ifdef _WIN32
#define MAINRET system("pause");return 0
#else
#define MAINRET return 0
#endif

В основном:

int main(int argc, char* argv[]) {
    MAINRET;
}
0 голосов
/ 24 февраля 2017

можно просто поставить keep_window_open (); перед возвратом вот один пример

int main()
{
    cout<<"hello world!\n";
    keep_window_open ();
    return 0;
}
0 голосов
/ 25 июля 2016

У меня была такая же проблема; В моем приложении есть несколько точек выхода (), и не было никакого способа узнать, где именно оно выходит, тогда я узнал об этом:

atexit(system("pause"));

или

atexit(cin.get());

Таким образом, он остановится независимо от того, где мы выйдем из программы.

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