目前我的重载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;
}
Run Code Online (Sandbox Code Playgroud)
stream >> std::ws;
Run Code Online (Sandbox Code Playgroud)
从输入序列中的当前位置提取尽可能多的空白字符。一旦发现非空白字符,提取就会停止。提取的这些空白字符不存储在任何变量中。
请注意,即使该skipws标志先前unsetf位于源流中,这也会跳过空格,因此无论如何您都应该这样做。