求助,文件读取问题
我编了一个小程序,用来计算数据文件中的总行数。可是计算完行数后,再对变量赋值就不对了,不知何故。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char filein[] = "f.txt ", buffer[100];
int nline; //文件中的行数
float data;
ifstream infile(filein, ios::in);
if(!infile){
cerr < < "open error! " < <endl;
abort();
}
/* 计算文件中的总行数 */
nline = 0;
do{
infile.getline(buffer,100);
nline++;
}while( infile.peek() != EOF );
/* 输出总行数以及第一行中数据 */
cout < < nline < < endl;
infile.seekg(0,ios::beg);
infile > > data;
cout < < data < < endl; //输出的结果不对
infile.close();
return 0;
}
[解决办法]
...
infile.clear();
infile.seekg(0,ios::beg);
...
[解决办法]
vc iostream上的bug,seek前记得clear
[解决办法]
这个怎么是bug呢?计算行数的时候已经读到文件末尾了,infile的流状态中的eof被置位,这个时候调用seekg根本就没有任何效果
[解决办法]
当你第一次遍历完文件时,已经到了文件流的结束.
如果你要重新操作此文件对象,则需要清除它此前的状态,然后再定位.
/* 输出总行数以及第一行中数据 */
cout < < nline < < endl;
infile.clear();
infile.seekg(0,ios::beg);
infile > > data;
cout < < data < < endl;
[解决办法]
只有到了结束,并且又读了一次才会置eof