读文件

2099阅读 0评论2010-08-26 snailshen
分类:C/C++

TCTimeCost timea;
        timea.Start();
       
        char buf[1024*10];
        int iFd = open("data.txt",O_RDONLY);
        if(iFd == -1){
                cout<<"open file:"<<"data.txt"<<" error!!!"<                return -1;
        }
        int isize = 0;
        int pos,pos2;
        string slastrec,srec;
        while((isize = read(iFd,buf,8192))>0){
                //cout<<"slastrec.size="<                //cout<<"slastrec="<                if(slastrec.size()>0)
                        srec = slastrec + string(buf);
                else
                        srec = buf;
                //cout<<"srec="<                pos = pos2 = 0 ;
                slastrec = "";
                while((pos=srec.find("\n", pos))!= string::npos){
                  //cout<<"jf rec="<                  pos2 = ++pos;
                }
                int recsize = srec.size();
                if(pos2                        slastrec = srec.substr(pos2,recsize-pos2);
               
        }
        close(iFd);
       
        cout<<"read file time:"<        timea.Start();
        ifstream  iFile("data.txt");
        while(iFile.good()){
                iFile.getline(buf, sizeof(buf));
                //cout<<"rec="<        }
        iFile.close();
        cout<<"fstream file time:"<

 

测试结果,源文件条数:1741条,可以看到用块读比一行一行读快60倍
read file time:10516
fstream file time:657857

上一篇:strlen
下一篇:函数指针