流随机访问

17.39

#include<iostream>
#include<fstream>
#include<string>
#include<cstdlib>
using namespace std;

int main()
{
    fstream inOut("copyOut",fstream::ate|fstream::in|fstream::out);
    if(!inOut)
    {
        cerr<<"Unable to open file!"<<endl;
        return EXIT_FAILURE;
    }
    auto end_mark=inOut.tellg();
    inOut.seekg(0,fstream::beg);
    size_t cnt=0;
    string line;
    while(inOut&&inOut.tellg()!=end_mark&&getline(inOut,line))
    {
        cnt+=line.size()+1;
        auto mark=inOut.tellg();
        inOut.seekp(0,fstream::end);
        inOut<<cnt;
        if(mark!=end_mark)
            inOut<<" ";
        inOut.seekg(mark);
    }
    inOut.seekp(0,fstream::end);
    inOut<<'\n';
    return 0;
}

 

posted @ 2014-09-03 18:13  Jessica程序猿  阅读(319)  评论(0编辑  收藏  举报