Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

std::cin.get();

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

system("pause");

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

Ответ 2

#include <stdio.h>
// ...
getchar();

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

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

void pause()
{
  std::cout << std::endl << "Press any key to continue...";
  getchar();
}

Ответ 3

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

Ответ 4

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

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

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

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

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

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