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

С++ ждет ввода пользователя

Каким будет лучший способ подождать ввода пользователя в консольное приложение?

std::cout << "press any key to exit...";
// wait for user to hit enter or another key
4b9b3361

Ответ 1

Несколько способов сделать это, вот несколько возможных однострочных подходов:

  1. Используйте getch() (необходимо #include <conio.h>).

  2. Используйте getchar() (ожидаемый для Enter, нужен #include <iostream>).

  3. Используйте cin.get() (ожидаемый для Enter, нужен #include <iostream>).

  4. Используйте system("pause") (нужно #include <iostream>).

    PS: этот метод также напечатает Press any key to continue . . . на экране. (кажется идеальным выбором для вас:))


Изменить: Как обсуждалось здесь, для этого нет полностью портативного решения. Вопрос 19.1 comp.lang.c FAQ охватывает это в некоторой степени, с решениями для Windows, Unix-подобных систем и даже MS-DOS и VMS.

Ответ 2

a do while loop будет хорошим способом подождать ввода пользователя. Вот так:

int main() 
{

 do 
 {
   cout << '\n' << "Press a key to continue...";
 } while (cin.get() != '\n');

 return 0;
}

Вы также можете использовать функцию system('PAUSE'), но я думаю, что это немного медленнее и зависит от платформы

Ответ 3

Для этого нет "стандартной" библиотечной функции. Стандарт (возможно, удивительно) фактически не распознает концепцию "клавиатуры", хотя у нее есть стандарт для "ввода в консоль".

Существуют различные способы достижения этого в разных операционных системах (см. решение herohuyongtao), но он не переносится на всех платформах, поддерживающих ввод с клавиатуры.

Помните, что С++ (и C) разработаны как языки, которые могут работать во встроенных системах, у которых нет клавиатур. (Сказав, что встроенная система может не иметь других устройств, поддерживаемых стандартной библиотекой).

Этот вопрос обсуждался долгое время.

Ответ 4

Вы можете попробовать

#include <iostream>
#include <conio.h>

int main() {

    //some codes

    getch();
    return 0;
}