Каким будет лучший способ подождать ввода пользователя в консольное приложение?
std::cout << "press any key to exit...";
// wait for user to hit enter or another key
Каким будет лучший способ подождать ввода пользователя в консольное приложение?
std::cout << "press any key to exit...";
// wait for user to hit enter or another key
Несколько способов сделать это, вот несколько возможных однострочных подходов:
Используйте getch()
(необходимо #include <conio.h>
).
Используйте getchar()
(ожидаемый для Enter, нужен #include <iostream>
).
Используйте cin.get()
(ожидаемый для Enter, нужен #include <iostream>
).
Используйте system("pause")
(нужно #include <iostream>
).
PS: этот метод также напечатает Press any key to continue . . .
на экране. (кажется идеальным выбором для вас:))
Изменить: Как обсуждалось здесь, для этого нет полностью портативного решения. Вопрос 19.1 comp.lang.c FAQ охватывает это в некоторой степени, с решениями для Windows, Unix-подобных систем и даже MS-DOS и VMS.
a do while loop будет хорошим способом подождать ввода пользователя. Вот так:
int main()
{
do
{
cout << '\n' << "Press a key to continue...";
} while (cin.get() != '\n');
return 0;
}
Вы также можете использовать функцию system('PAUSE')
, но я думаю, что это немного медленнее и зависит от платформы
Для этого нет "стандартной" библиотечной функции. Стандарт (возможно, удивительно) фактически не распознает концепцию "клавиатуры", хотя у нее есть стандарт для "ввода в консоль".
Существуют различные способы достижения этого в разных операционных системах (см. решение herohuyongtao), но он не переносится на всех платформах, поддерживающих ввод с клавиатуры.
Помните, что С++ (и C) разработаны как языки, которые могут работать во встроенных системах, у которых нет клавиатур. (Сказав, что встроенная система может не иметь других устройств, поддерживаемых стандартной библиотекой).
Этот вопрос обсуждался долгое время.
Вы можете попробовать
#include <iostream>
#include <conio.h>
int main() {
//some codes
getch();
return 0;
}