我试图让用户输入三个值:用户名,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!
std::getline
然后检查提取的字符串是否为空。 - Bob__