C++ Primer(第5版) 练习 17.39
练习 17.39 对本节给出的seek程序,编写你自己的版本。
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string>
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;
}