这不起作用:
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');
尝试:
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标志,这意味着它在提取并放入字符串之前会“跳过”任何空格。
尝试:
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;
}
有了它,您就不需要字符串或 int 了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;
}