无论我使用什么,我的输入都会被跳过
My input is getting skipped no matter what I use
我试图让用户输入三个输入:用户名、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;
}
相关文章:
- 无论我使用什么,我的输入都会被跳过
- 我的程序没有从文件中读取并输入数据
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 为什么当我输入较大的数字时,我的程序会到达文件末尾?
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?
- 如何反转我的输入,包括否定
- 为什么我的程序在输入某个形状的面积的测量值后没有结束?
- 为什么我的输出与输入不同?(C++)
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- C++ 我的开关格式中的循环不允许我显示菜单选项或接受输入?
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- 我应该如何在C++中使用结构体解决输入失败的问题?
- 我遇到使用 c++ 逐行读取输入文件的问题
- 为什么我的 while 循环对于特定输入中断,而对于其他输入工作正常?
- 如果我想使用 cout 为我的函数提供任何输入......我该如何给出
- 我有两棵二叉树.我想在不更改输入树的情况下深度复制两个二叉树的结果
- 如果我更改函数输入,我的递归不起作用?
- 为什么我的递归最长递增子序列函数不适用于大输入?
- 我必须输入我的名字才能输入我的资源,我该怎么做
- 登录系统C++:输入我的字符串User&Pass后,它要求我重新输入它们