C++中ifstream的>>
操作符很好用,可以自动跳过空格和回车,同时对多个变量赋值,比如
in >> a >> b >> c >> d;
。
但是>>
操作符会忽略前面的空白符和换行符,但不会越过后面的换行符和空白符,也就是说都玩一个数据后会将不会跳过空格或者换行,只有在读取下一个的时候才会跳过,之前判断是否文件尾使用!in.eof()
和in.peek()==EOF
,但是都不能避免这个问题。
后来发现>>
是有返回值的,可以直接作为判断
while(in>>temp.name)
{
in >> temp.a >> temp.b >> temp.c >> temp.d;
temp.push_back(temp);
}
这样就OK啦,如果觉得不够稳,可以把所有输入都放到while条件里面,哈哈?