首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,文件读取有关问题

2012-03-14 
求助,文件读取问题我编了一个小程序,用来计算数据文件中的总行数。可是计算完行数后,再对变量赋值就不对了,

求助,文件读取问题
我编了一个小程序,用来计算数据文件中的总行数。可是计算完行数后,再对变量赋值就不对了,不知何故。


#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

热点排行