今天看到一些帖子,发现说当读取文件采用eof作为循环条件时,会多读一遍,但我寻思着我怎么没有遇到过这个问题?然后测试了以下,最后发现了一个问题,似乎这个问题仅针对输入对象为char才会成立,如果是int型就不会有这个问题。
文件内容为
1 2 3
4 5 6
7 8 9
ifstream fin("test_data.txt" /*, ios::binary*/);
while(!fin.eof()){
int a,b,c;
char d, e, f;
fin >> d >> e >> f;
cout << d << e << f << endl;
// fin >> a >> b >> c;
// cout << a << b << c << endl;
}
//输出为
//123
//456
//789
//789
ifstream fin("test_data.txt" /*, ios::binary*/);
while(!fin.eof()){
int a,b,c;
char d, e, f;
// fin >> d >> e >> f;
// cout << d << e << f << endl;
fin >> a >> b >> c;
cout << a << b << c << endl;
}
//输出为
//123
//456
//789
虚心请教,这是因为什么?