Консольная пауза в C ++? - PullRequest
       2

Консольная пауза в C ++?

23 голосов
/ 03 декабря 2010

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

Ответы [ 4 ]

35 голосов
/ 03 декабря 2010

Самый простой способ это просто:

std::cin.get();

Вы можете напечатать что-то вроде «Нажмите любую клавишу, чтобы продолжить ...» до этого.Некоторые люди расскажут вам о

system("pause");

Но не используйте его.Это не портативный.

5 голосов
/ 03 декабря 2010
#include <stdio.h>
// ...
getchar();

Функция ожидает однократного нажатия и возвращает свое (целочисленное) значение.

Например, у меня есть функция, которая делает то же самое, что и System("pause"), но без такой «паузы».exe "(это потенциальное целое безопасности, кстати):

void pause()
{
  std::cout << std::endl << "Press any key to continue...";
  getchar();
}
3 голосов
/ 03 декабря 2010

В стандарте ничего нет, и ничего кроссплатформенного. Обычный метод - дождаться нажатия , а затем отбросить результат.

1 голос
/ 26 ноября 2017

Неправильное решение будет использовать system("pause"), поскольку это создает дыры в безопасности (вредоносный pause.exe в каталоге!) И не является кроссплатформенным (пауза существует только в Windows / DOS).

Существует более простое решение:

void myPause() {
    printf("Press any key to continue . . .");
    getchar();
}

Используется getchar(), который соответствует POSIX (см. this ).Вы можете использовать эту функцию следующим образом:

int main() {
    ...
    myPause();
}

Это эффективно предотвращает мигание консоли и ее выход.

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