为什么在使用循环时忽略输入的第一个字符
why getline ignoring first character of input while using in loop?
do
{
system("cls");
cout<<"Enter Item Name:"<<endl;
cin.ignore();
cin.getline(item_name,size);
cout<<item_name<<endl;
cout<<"Enter Item Price:"<<endl;
cin>>item_price;
cout<<" Do You Want To Add More Item..?nPress Y/N."<<endl;
char c;
c=getche();
}while(c=='y'||c=='Y');
这是代码的速度,实际上我在项目中使用了它,我无法删除CIN.IGNORE,因为除非用户按任何其他字符,否则我必须从用户那里获得输入
您知道标题中问题的答案。呼叫
cin.ignore();
读取cin
的下一个字符并将其丢弃。
我认为,您要解决的真正问题是:如何终止循环?
这很简单。不要仅比较一个角色。比较整个线。
do
{
system("cls");
cout << "Enter Item Name:"<<endl;
cin.getline(item_name, size);
cout << item_name << endl;
cout << "Enter Item Price:" << endl;
cin >> item_price;
cout << "Do You Want To Add More Item..?nPress Y/N." << endl;
std::string ans;
getline(cin, ans);
} while (ans == "y" || ans == "Y");
您可以使用以下。线c=getche();
之后使用cin.ignore();
:
char c;
do
{
system("cls");
cout<<"Enter Item Name:"<<endl;
cin.getline(item_name,size);
cout<<item_name<<endl;
cout<<"Enter Item Price:"<<endl;
cin>>item_price;
cout<<" Do You Want To Add More Item..?nPress Y/N."<<endl;
c=getche();
cin.ignore();
}while(c=='y'||c=='Y');
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 如何设置默认参数以防用户不输入另一个参数
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- 为什么在我的程序中输入另一个输入会给我不同的结果
- OpenGL:第二个VBO破坏了第一个VBO
- 为什么第一个Dynamic_cast没有投射到基类?
- C++ 验证同一行上两个输入的第一个
- (C++)生成数组中的第一个p*n完美平方数(从键盘输入p和n)
- 输入后,我的程序似乎跳过了第一个IF语句,直接转到ELSE
- 当一长串字符传递给第一个 cin 时,为什么不暂停第二个 cin 上的输入?
- 当我超过第一个 getline() 的输入中的数组大小时,第二个 getline 或其他输入函数不起作用
- 为什么无论输入如何,我的第一个 "if" 语句都会执行?