0

既存のテキストファイルの最初の行に何かを書き込む簡単な方法を探していました。次のように ofstream を使用してみました:

ofstream textFileWriter("Data/...txt");
if (textFileWriter.is_open())
{
    textFileWriter << "HEADER: stuffstuff";
}

ただし、ofstream が std::ofstream::trunc で構築されていなくても、そのファイルにあったものはすべて削除されます。最初の行に書き込むことが重要なので、std::ofstream::app は使用できません。

テキストファイル全体を既に行を含むベクトルにコピーしてから書き戻すことは私の最後のオプションですが、テキストファイルが非常に大きいため、本当に避けたいことです。

4

1 に答える 1

2

ファイルの先頭に単純に「追加」することはできません。

一般的な解決策は、新しい (一時) ファイルを開き、新しいヘッダーを書き込み、元のファイルの残りを一時ファイルに書き込み、(OS システム コールを使用して) 一時ファイルを元のファイルとして "名前変更" することです。

または、質問で言うように、元のファイルをメモリ内バッファー (ベクトルなど) に読み取り、そのバッファーで変更を行ってから、バッファーをファイルに書き込みます。

于 2013-07-30T10:37:07.073 に答える