{{1}}
当我运行程序时,它看起来像这样 您好请输入有关披萨的一些信息
直径:40 公司名: 重量:这是我们为您的披萨公司汇总的信息 公司名: 直径:40 重量:0
答案 0 :(得分:0)
出现的是您尚未使用该代码清除缓冲区。
什么是缓冲区?
临时存储区域称为缓冲区。所有标准输入和输出设备都包含输入和输出缓冲区。在标准C / C ++中,流被缓冲,例如在标准输入的情况下,当我们按下键盘上的键时,它不会发送到您的程序,而是由操作系统缓冲,直到时间被分配给程序
如何影响编程? 在各种情况下,您可能需要清除不需要的缓冲区,以便在所需容器中获取下一个输入,而不是在上一个变量的缓冲区中。
cin.clear();
fflush(stdin);
这是您需要在程序中添加的代码。
int main()
{
struct pizza
{
char name[15];
float diameter;
int weight;
};
pizza*user= new pizza{
};
cout<<"Hello please enter some information about your pizza"<<endl;
cout<<endl<<"Diameter: ";
cin>>user->diameter;
cout<<"company name: ";
cin.clear(); //for clearing the input buffer
fflush(stdin);
cin.get(user->name,15);
cout<<endl<<"Weight: ";
cin.clear();
fflush(stdin);
cin>>user->weight;
cout<<"here is the information that we have assembled about your pizza
company"<<endl;
cout<<"Company name: "<<user->name<<endl;
cout<<"diameter: " <<user->diameter<<endl;
cout<<"weight: "<<user->weight<<endl;
return 0;
}
遇到“cin”语句后,我们要求输入字符数组或字符串,我们需要清除输入缓冲区,否则所需的输入被前一个变量的缓冲区占用,而不是由所需的容器占用。按“在第一次输入后在输出屏幕上输入“(回车)”,因为前一个变量的缓冲区是新容器的空间(因为我们没有清除它),程序会跳过以下容器输入。