为什么在使用循环时忽略输入的第一个字符

why getline ignoring first character of input while using in loop?

本文关键字:输入 第一个 字符 循环 为什么      更新时间:2023-10-16
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');