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