【问题标题】:Not able to read string in a structure无法读取结构中的字符串
【发布时间】:2014-12-04 10:04:26
【问题描述】:

当我运行程序时,它会立即进入输入标记部分并完全跳过 getline 部分。此外,当我使用 cin 时,它工作正常,但我显然无法阅读全名。我究竟做错了什么? 这是具有输入和输出功能的结构:

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;
}
};

这是我称之为的函数:

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();
};

【问题讨论】:

    标签: c++ string struct


    【解决方案1】:

    如果您混合使用cingetline,您必须记住cin 通常会在键盘缓冲区中留下\n 字符。当getline ckecks 缓冲区时,它将\n 字符视为第一个并立即结束。在getline 函数之前使用cin.ignore 删除\n 字符。

    【讨论】:

    • 您好,非常感谢您的回答。该程序现在运行良好。只是想知道是否有更好的方法可以将数字和字符串并排输入?
    • 嗯,你的方法是正确的。你只需要记住提到的约束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2017-02-02
    • 2014-04-30
    相关资源
    最近更新 更多