目前我的超載operator>>
函數採用輸入[4: 1 2 3 4 ]
並且工作正常。但是,我怎樣才能忽略任何數量的空格,以便它可以接受[ 4 : 1 2 3 4 ]
,即輸入前的任意數量的空格?如何忽略運營商過載中的空格輸入流>>
istream& operator>>(istream & stream, my_vector & vector_a) {
string token2;
int vec_size;
vector<double> temp_vec;
bool push = false;
while (stream >> token2) {
if (token2[0] == '[' && token2[2] ==':') {
push = true;
}
if (token2 == "]") {
break;
}
else if(!(token2[0] == '[' && token2[2] ==':')) {
stream.setstate(ios::badbit);
}
if(push) {
istringstream str(token2);
double v;
if (str >> v)
temp_vec.push_back(v);
vector_a.set_data(temp_vec);
}
}
return stream;
}
我已經把流>> token2 >> std :: ws放在我的while循環條件下,但它仍然不起作用。我認爲這是你的意思? – cody
@cody:你的問題不是空白,而是理解'標記'是什麼。而不是讀取一個字符串,讀一個'char'(接着是'ws'),然後是一個'int'(接着是'ws'),然後是另一個'char'。 –