C++ 允许用户跳过输入,只需按回车键

C++ 允许用户跳过输入,只需按回车键,c++,input,cin,C++,Input,Cin,我是否可以允许用户只按Enter键而不输入任何输入,并在std::cin中继续执行程序?谢谢 _tprintf(_T("\nENTER CHOICE: ")); cin>>ch; cin.ignore(); 当我用这个代码段运行程序时,很可能我根本不想在该字段中输入任何内容,当我按enter键时,光标只会产生新行 如果我正确理解了您的问题,您只需检查输入是否等于”;如果没有,请不要继续执行请求的操作 编辑:哦,既然你编辑了你的问题,我就知道你想要什么了。只需使用cin.ignore

我是否可以允许用户只按Enter键而不输入任何输入,并在
std::cin
中继续执行程序?谢谢

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

当我用这个代码段运行程序时,很可能我根本不想在该字段中输入任何内容,当我按enter键时,光标只会产生新行

如果我正确理解了您的问题,您只需检查输入是否等于
;如果没有,请不要继续执行请求的操作

编辑:哦,既然你编辑了你的问题,我就知道你想要什么了。只需使用
cin.ignore()。在此之前,您无需执行任何操作。

如果您“读入”
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
,等等

如果希望用户在输入数字后按enter键,则必须在代码中处理该问题

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

#include <iostream>

int main() {
     std::string line;
     while(std::getline(std::cin, line)) {
         std::cout << line << '\n';
     }
}
#包括
int main(){
std::字符串行;
while(std::getline(std::cin,line)){

std::cout
它通常在输入中保留换行键,因此如果在输入之后立即执行
std::getline
,它将返回一个空字符串。为了避免这种情况,可以使用
std::cin.ignore(1),\n')
要使其在您尝试使用
std::getline
之前忽略换行符,您不能使用
cin

如果在程序等待输入时按ENTER键,
cin
将完全忽略换行符(就像由于
skipws而忽略空格一样),将换行符存储在输入流中,并继续请求输入。除非它收到相关类型的有效输入或遇到EOF,否则它将继续请求您输入

改用
getline
函数

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

cout@Alexandrubarabie不标准。发布一个示例程序,以便我能更清楚地理解。可能重复
#include <string>
...
cout << "Enter Something\n";
string a;
getline(cin, a);