Консольная пауза в C++?
В C# вы можете заставить консоль ждать ввода символа (что полезно для возможности увидеть последние выходные данные консоли перед выходом из программы). Как новичок в C++, я не уверен, что такое эквивалент. Есть один?
4 ответа
Самый простой способ это просто:
std::cin.get();
Вы можете напечатать что-то вроде "Нажмите любую клавишу, чтобы продолжить..." до этого. Некоторые люди расскажут вам о
system("pause");
Но не используйте это. Это не портативно.
#include <stdio.h>
// ...
getchar();
The function waits for a single keypress and returns its (integer) value.
Например, у меня есть функция, которая делает то же самое, что и System("pause")
, но не требуя, чтобы "pause.exe" (который является потенциальным целым безопасности, кстати):
void pause()
{
std::cout << std::endl << "Press any key to continue...";
getchar();
}
В стандарте ничего нет, и ничего кроссплатформенного. Обычный метод - дождаться нажатия клавиши
Неправильное решение будет использовать system("pause")
поскольку это создает дыры в безопасности (вредоносный pause.exe в каталоге!) и не является кроссплатформенным (пауза существует только в Windows/DOS).
Есть более простое решение:
void myPause() {
printf("Press any key to continue . . .");
getchar();
}
Это использует getchar()
, который соответствует POSIX (см. это). Вы можете использовать эту функцию следующим образом:
int main() {
...
myPause();
}
Это эффективно предотвращает мигание консоли, а затем ее выход.