C++ 无法读取结构中的字符串
当我运行程序时,它会直接进入enter-marks部分并跳过getline部分。而且,当我使用cin时,它工作正常,但我显然看不清全名。我做错了什么? 以下是包含输入和输出函数的结构:C++ 无法读取结构中的字符串,c++,string,struct,C++,String,Struct,当我运行程序时,它会直接进入enter-marks部分并跳过getline部分。而且,当我使用cin时,它工作正常,但我显然看不清全名。我做错了什么? 以下是包含输入和输出函数的结构: struct student { string name; float marks; void getinfo() { cout<<"Enter name:\n"; getline (cin , name); //This part gets skipped co
struct student
{
string name;
float marks;
void getinfo()
{
cout<<"Enter name:\n"; getline (cin , name); //This part gets skipped
cout<<"Enter marks:\n"; cin>>marks; cout<<endl;
}
void showinfo()
{
cout<<"\nName: "<<name;
cout<<"\nMarks: \n"<<marks;
}
};
如果混合使用
cin
和getline
用法,您必须记住cin
通常会在键盘缓冲区中留下\n
字符。当getline
ckecks缓冲区时,它会将\n
字符作为第一个字符并立即结束。使用cin.ignore
beforegetline
函数删除\n
字符。您好,非常感谢您的回答。程序现在运行良好。只是想知道是否有更好的方法来输入相邻的数字和字符串?好吧,你的方法是正确的。您只需要记住提到的约束。
void stack::push()
{
if(top==4)
cout<<"Overflow!\n";
else
{
top++;
S[top].getinfo();
}
}
class stack
{
student S[5];
int top;
public:
stack() { top=-1;}
void push();
void pop();
void display();
};