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);
をして、そこからすべての値を抽出するための文字列を解析:あなただけの同じ行からすべてを読みたい場合は
もちろん、私はそれを逃しました、私はループを終了しなければなりません。ストリームのEnterキーを認識する方法はありますか?私のループを壊す可能性があります。 –
新しい行で停止したいなら、 'getline'が行く方法だと思います。その後、文字列を解析して文字列を解析することができます。これを見てください:http://stackoverflow.com/questions/9673708/tell-cin-to-stop-reading-at-newline – grigor
はい、これが解決策になるかもしれません。とにかく、どうもありがとうございました。何が問題なのか分かりました。ありがとう! –