Это не работает:
string temp;
cout << "Press Enter to Continue";
cin >> temp;
Это не работает:
string temp;
cout << "Press Enter to Continue";
cin >> temp;
cout << "Press Enter to Continue";
cin.ignore();
или лучше:
#include <limits>
cout << "Press Enter to Continue";
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
cin.ignore()
тоже не ищет символ новой строки? После быстрого теста здесь я не увидел никакой разницы в поведении.
- person Alexander; 02.06.2018
Пытаться:
char temp;
cin.get(temp);
или, еще лучше:
char temp = 'x';
while (temp != '\n')
cin.get(temp);
Я думаю, что ввод строки будет ждать, пока вы не введете реальные символы, а не только новую строку.
Замените cin >> temp
на:
temp = cin.get();
http://www.cplusplus.com/reference/iostream/istream/get/ а>
cin >>
будет ждать EndOfFile. По умолчанию cin будет иметь флаг skipws. set, что означает, что он «пропускает» любые пробелы, прежде чем они будут извлечены и помещены в вашу строку.
Пытаться:
cout << "Press Enter to Continue";
getchar();
В случае успеха возвращается прочитанный символ (повышенный до значения int
, int getchar ( void );
), который можно использовать в тестовом блоке (while
и т. д.).
Вам нужно включить conio.h, так что попробуйте это, это просто.
#include <iostream>
#include <conio.h>
int main() {
//some code like
cout << "Press Enter to Continue";
getch();
return 0;
}
При этом вам не нужна строка или целое для этого просто getch();
Функция 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;
не возвращает пустой ввод. Поэтому мне было интересно, как поступить с необязательным пользовательским вводом (что имеет смысл, поскольку строковая переменная, конечно, может быть пустой).
Еще одно решение, но для C. Требуется Linux.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("Press any key to continue...");
system("/bin/stty raw"); //No Enter
getchar();
system("/bin/stty cooked"); //Yes Enter
return 0;
}
inline void WaitEnter() { std::cout << "Press Enter to continue..."; while (std::cin.get()!='\n'); }
Большинство ответов здесь просто бездельничают. Вы даже можете поместить это в лямбду, если хотите. - person slashmais   schedule 29.04.2018