私がここでやりたいことは、はじめに最初に単語 "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";
}
Iは、I入力r = 3、例えば、ファイルが空である場合、受信出力:
org:
org:
pos: -1
はまた、ファイルが空のままです。出力はありません。 tellg()が機能していないようです。 誰もここで何をすべきか考えていますか?
同じファイルを読み書きすることはできません。出力には一時ファイルを使用し、元のファイルとして名前を変更します(両方のファイルを閉じた後に)。 –
あなたは一度にたくさんの新しいことをしようとしています。問題をより小さく、より単純な問題に分解し、一度に1つずつ取り組んでください。 – Beta