重载>>运算符,填充矢量同时循环

时间:2016-08-09 20:36:11

标签: c++ vector overloading

我想编写程序女巫类,其中包含一些向量。我重载了“>>”运算符,我想把值输入一行,比如

  

1 2 3 4

这是我的功能

istream &operator>>(istream &in, Wielomian &w){
    double val;
    w.stopien=0;
    while(in>>val){
        w.tabw.push_back(val);
        w.stopien++;
    }
    return in;
};

我不知道我做错了什么,这个功能在循环时不会完成。 这是我的班级

class Wielomian{

private:
    int stopien;
    vector<double> tabw;
public:
    Wielomian(){
        stopien=0;
    }
    Wielomian(int s, vector<double> t){
        tabw=t;
        stopien=s;
    }
    Wielomian(Wielomian &w){
        this->stopien=w.stopien;
        this->tabw=w.tabw;
    }

    friend istream &operator>>(istream &in, Wielomian &w);
    friend ostream &operator<<(ostream &out, const Wielomian &w);
};

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

如果您只想阅读同一行中的所有内容,请尝试使用getline代替while(in >> val)

string inputStr;
std::getline(in, inputStr);

然后解析字符串以从中提取所有值。否则,如果您正在进行while(in >> val),则需要以某种方式终止输入。