如何重载cin并使用getline

时间:2015-03-28 02:48:50

标签: c++

我正在尝试完成我的实验室,但是我不知道如何为字符串分配内存。所以我不断收到错误 warning: ‘_name’ is used uninitialized in this function [-Wuninitialized]

我也不明白我的getline行是否正确。

std::istream& operator>>(std::istream& is, Grade& RO){
    int _mark;
    char* _name;

    std::cout<<"Subject name: ";
    is.ignore();
    is.getline(_name, (strlen(_name) + 1));

    std::cout<<"Mark :";
    is>> _mark;

    RO=Grade(_name, _mark);
return is;
}

1 个答案:

答案 0 :(得分:0)

好的@Jessica,(一般问题和一些信息)我想,

Grade是一个包含两个数据成员的类:int markstring name。并且您希望重载插入运算符 >>以填充这些值。
(我建议你把所有cout表达式都留在这个函数之外。)这是一个可能的实现:

istream& operator>> (istream& is, Grade& RO){
    // declare local variables to insert the input values
    int mark;
    string name;
    // extract values from input stream 
    is >> mark >> name;
    // assuming you have member functions that set values for the object RO
    RO.set_mark(mark);
    RO.set_name(name);

return is;
}