我想在这里做的是打印单词" hello",首先在开头,然后跳过一些行,然后再次在文件中打印。我需要跳过的行数由用户指定。该文件可能是空的,也可能不是空的,如果它不是空的,我不想更改我需要打印的行以外的数据。如果文件为空,则必须跳过空行并在某些行后仍然打印。
这是我的代码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
ifstream f1("temp.txt");
ofstream f2("temp.txt");
int r;
cout << "Enter number of lines to skip:" ;
cin >> r;
f2 << "hello";
string org = "";
while(--r){
getline(f1, org);
cout << "org: "<< endl;
}
int pos = f1.tellg();
cout << "pos: " << pos << endl;
f2.seekp(pos, f2.beg);
f2 << "hello";
}
例如,当我输入r = 3时,我收到的输出,文件为空:
org:
org:
pos: -1
此外,该文件仍为空。没有输出。 tellg()似乎不起作用。 任何人都知道该怎么做?
答案 0 :(得分:0)
首先,不要读写同一个文件。文件以不同的模式打开,因此不起作用。但除此之外,解析输入也是一种更好的做法,然后在内存中对其进行操作并写出所需的结果。所以打开文件,阅读感兴趣的内容(你可以存储有趣的行的地图,或者将整个内容读入内存),然后对其进行操作,并写出结果。