2016-06-23 17 views
0

私はに特定の位置にテキストを追加しようとしていますofstreamseekpを持つをC++で追加します。ただし、ファイルの末尾には常に付加されます。C++の特定の位置にテキストを追加できない

私はを試しました。file.write(string, len)と書いてみましたが、結果は同じです。

マイコード:

一般
void printHistory(int media, time_t timestamp){ 
    ofstream file("history.json", ios::app); 
    long initial_pos = file.tellp(); 
    file.seekp(initial_pos-3); 
    file << ", [" << timestamp << "," << media << "]]\n}"; 
    file.close(); 
} 
+0

()'コール。代わりに 'file.write()'を使わなければなりません。しかし注意してください:それはその位置にあるすべてのものを上書きします。 –

+0

私はこれを試しました。結果はとても同じです... – Luiz

+0

投稿する[MCVE]してください、誰もあなたの問題を再現することができます。 –

答えて

0

どのようなものについて:確かに `演算子<<()` `seekp気にしない

fstream fs ("fred.txt", ios::in | ios::out); 
fs.seekg (0, ios::end); 
streamoff filesize = fs.tellg(); 
fs.seekp (filesize - 3); // locate yourself 3rd char from end. 
fs.write("X", 1); 
fs.close(); 
+0

私のために働いた、ありがとう! – Luiz

+0

一般的に、あなたのコードが何をしているのか、その理由を伝えることは、コードだけではなく、それがどのように問題を解決しているのかについての説明もないだけです。 – hyde

+0

@hyde一般に、私は同意します。 – schenken

0

、あなたは一時的なストリームまたはファイルに記述する必要があり、「挿入」します。途中で積極的に更新することはできません。

多くのSTLタイプでは挿入がサポートされていますが、背後のプロセスでシミュレートされます。

擬似コード:

pos = some_int_point_in_file 
open(file) as f and open(tmp) as t: 
    read f into t until pos then 
     insert whatever 
    finishing reading the rest of f into t 
swap file and tmp 
関連する問題