[英]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,因为我必须从用户那里获取输入,除非用户按下任何其他字符而不是y
您知道标题中问题的答案。 通话
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");
您可以使用以下内容。 使用cin.ignore();
在c=getche();
行之后c=getche();
:
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');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.