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

问题描述 投票:0回答:1

我试图让用户输入三个输入:用户名,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!
c++ input user-input cin
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.