无论我使用什么,我的输入都会被跳过

My input is getting skipped no matter what I use

本文关键字:输入 我的 什么      更新时间:2023-10-16

我试图让用户输入三个输入:用户名、id和备用id。如果用户输入用户名的返回,程序应该结束。如果用户输入用户名并为接下来的两个id输入返回值,则输入应显示为无效。我尝试过使用cin、fgets和get(我知道get通常是糟糕的编程(。当我使用cin时,我尝试使用cin.clear((和cin.ignore((来跳过换行条目。第一个输入总是有效的,但第二个输入调用总是被跳过。

代码片段:

int main(){
string name, altID, tempUWFID;
char input;
cout << "Name> ";   
//  if (cin.get() == 'n') - This was one way that I tried.
if ((input = getchar()) == 'n')
break;
else 
cin >> name;
cout << "UWF ID> ";
if ((input = getchar()) != 'n')
cin >> tempUWFID;
cout << "Alternate ID> ";
if ((input = getchar()) != 'n')
cin >>altID;
cout << "nThank you for abusing my program, have a nice day!n";

输出:

Welcome to Voter's Registration
Name> johnny
UWF ID> Alternate ID>
ad
Invalid UWF ID
Name>
Thank you for abusing my program, have a nice day!

预期输出:

Welcome to Voter's Registration
Name> johnny
UWF ID> somenumber 
Alternate ID> someothernumber
Invalid UWF ID
Name>
Thank you for abusing my program, have a nice day!

这是我构建的一个快速小程序,它能解决你的问题吗?

cin本身可以读取换行符,cin >>。。。将换行符视为空白并忽略它们。CCD_ 2和CCD_ 3将从CCD_。

看看这对你是否有效。

#include <iostream>
#include <string>
using namespace std;
int main()
{
string name = "";
string uwfId = "";
string altId = "";
cout << "nName> ";   
getline(cin, name);
if(name == "" )
return 0;
cout << "nUWF ID> ";
getline(cin, name);
cout << "nAlternate ID> ";
getline(cin, name);
if(uwfId == "" || altId == "")
{
cout << "nInvalid!";
return 1;
}
return 0;
}
相关文章: