按Enter键继续

问题描述:

这不起作用:按Enter键继续

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'); 
+0

这确实是一个跨平台的方式,可以在这些行之间放置 2009-05-24 07:05:21

+4

cin绑定到cout,因此在发生cin的任何I/O之前,cout的输出已经被刷新 – 2009-05-24 15:06:35

尝试:

char temp; 
cin.get(temp); 

,或者更好的:

我认为字符串输入等着你输入真实的字符,而不仅仅是一个换行符。

替换您的cin >> temp有:

temp = cin.get(); 

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

cin >>将等待EndOfFile。默认情况下,cin将设置标记集,这意味着它在提取并放入字符串之前会跳过任何空格。

尝试:

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); 
} 

我发现这个要归功于questionanswer我发现std::cin >> temp;没有返回空输入。所以我想知道如何处理可选的用户输入(这对于字符串变量来说当然是空的)。