2016-08-09 20 views
1

私は、いくつかのベクトルを含むプログラムの魔法使いのクラスを書きたいと思います。私は、 ">>" 演算子をオーバーロードされたと私は1つのラインでそれらを入力して値を入れたい、このオーバーロード>>演算子、whileループwhileベクトル

のようにこれは私の機能

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

Iドンであります私が間違っていることを知っていない、この関数はループ中に終了しません。 これは私のクラスである

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

はどんなアドバイスをいただき、ありがとうございます。

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

をして、そこからすべての値を抽出するための文字列を解析:あなただけの同じ行からすべてを読みたい場合は

答えて

1

あなたはwhile(in >> val)の代わりにgetlineを使用してみてください。それ以外の場合は、while(in >> val)を実行している場合は、何らかの理由で入力を終了する必要があります。

+0

もちろん、私はそれを逃しました、私はループを終了しなければなりません。ストリームのEnterキーを認識する方法はありますか?私のループを壊す可能性があります。 –

+0

新しい行で停止したいなら、 'getline'が行く方法だと思います。その後、文字列を解析して文字列を解析することができます。これを見てください:http://stackoverflow.com/questions/9673708/tell-cin-to-stop-reading-at-newline – grigor

+0

はい、これが解決策になるかもしれません。とにかく、どうもありがとうございました。何が問題なのか分かりました。ありがとう! –

関連する問題