2013-07-26 218 views
0

有没有什么办法可以让用户只按下回车键而不需要输入任何输入并继续执行程序std::cin?谢谢!允许用户跳过输入输入,只需按Enter键

_tprintf(_T("\nENTER CHOICE: ")); 
cin>>ch; 
cin.ignore(); 

当我运行这个代码段的程序,没准什么时候我真的不希望在该字段中输入任何东西,当我按下回车键,光标只会产生新的生产线。

+0

@AlexandruBarbarosie不标准。 – Rapptz

+0

'std :: cin.get()' – 0x499602D2

+0

发布示例程序,以便我可以更清楚地理解。 – 0x499602D2

回答

0

如果我正确理解你的问题,你可以简单地检查输入是否等于"";如果没有,请不要继续执行所要求的操作。

编辑:哦,现在你编辑你的问题我想出你想要什么。只需使用cin.ignore();即可。在此之前,你不需要任何东西cin >>

1

如果您“读入”std::noskipws,则读取将停止跳过空白。这意味着当你阅读单个字符时,你可以阅读空格和换行符等。

#include <iostream> 
#include <iomanip> 

int main() { 
    std::cin >> std::noskipws; //here's the magic 
    char input; 
    while(std::cin >> input) { 
     std::cout << ">" << input << '\n'; 
    } 
} 

当输入运行:

a 

b 

c 

生产:

>a 
> 

> 

>b 
> 

> 

>c 

所以我们可以看到,它在信中a读,然后换行回车键后,再空行,然后字母b

如果你想使用r在输入数字后点击回车键,你必须在你的代码中处理。

如果用户只需输入每行一个“东西”,实际上是一个更简单的方法:

#include <iostream> 

int main() { 
    std::string line; 
    while(std::getline(std::cin, line)) { 
     std::cout << line << '\n'; 
    } 
} 

这将读取输入的字符,直到该行的结尾,让您阅读线与空间,或线路什么也没有。请注意,在使用std::cin >>之后,它通常会将换行符保留在输入中,所以如果您在std::getline之后立即返回空字符串。为避免这种情况,在尝试使用std::getline之前,可以使用std::cin.ignore(1, '\n')使其忽略换行符。

0

不,您不能使用cin来做到这一点。

如果按ENTER键当程序等待输入,cin会完全忽略换行(就像它忽略由于skipws空格),存储输入流中的换行字符,并保持要求的输入。除非它收到相关类型的有效输入或遇到EOF,否则它会一直要求输入。

改为使用getline函数。

#include <string> 
... 
cout << "Enter Something\n"; 
string a; 
getline(cin, a);