Нажмите Enter, чтобы продолжить - PullRequest
35 голосов
/ 24 мая 2009

Это не работает:

string temp;
cout << "Press Enter to Continue";
cin >> temp;

Ответы [ 6 ]

74 голосов
/ 24 мая 2009
cout << "Press Enter to Continue";
cin.ignore();

или, лучше:

#include <limits>
cout << "Press Enter to Continue";
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
9 голосов
/ 24 мая 2009

Попробуйте:

char temp;
cin.get(temp);

или, еще лучше:

char temp = 'x';
while (temp != '\n')
    cin.get(temp);

Я думаю, что ввод строки будет ждать, пока вы не введете реальные символы, а не просто новую строку.

8 голосов
/ 24 мая 2009

Замените ваш cin >> temp на:

temp = cin.get();

http://www.cplusplus.com/reference/iostream/istream/get/

cin >> будет ждать EndOfFile. По умолчанию в cin будет установлен флаг skipws , что означает, что он «пропускает» любой пробел перед извлечением и вставкой в ​​строку.

2 голосов
/ 15 января 2017

Вам нужно включить conio.h, попробуйте это, это просто.

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

int main() {

  //some code like
  cout << "Press Enter to Continue";
  getch();

  return 0;
}

При этом вам не нужна строка или int для этого просто getch();

2 голосов
/ 20 мая 2015

Попробуйте:

cout << "Press Enter to Continue";
getchar(); 

В случае успеха возвращается считанное символическое значение (повышается до значения int, int getchar ( void );), которое можно использовать в тестовом блоке (while и т. Д.).

1 голос
/ 13 декабря 2017

Функция std :: getline (уже представленная в C ++ 98) предоставляет переносимый способ реализации этого:

#include <iostream>
#include <string>

void press_any_key()
{
    std::cout << "Press Enter to Continue";
    std::string temp;
    std::getline(std::cin, temp);
}

Я нашел это благодаря этому вопросу и ответу после того, как я заметил, что std::cin >> temp; не возвращается с пустым вводом. Поэтому мне было интересно, как справиться с необязательным пользовательским вводом (который имеет смысл для строковой переменной, конечно, может быть пустой).

...