2014-01-24 32 views
0

有沒有辦法將ofstream重置迴流的開始,但不寫入數據?我知道如何將流重置到開始,但是它會覆蓋所有舊數據。我意識到我可以保存最初的數據,直到我準備好寫入它,但是我不確定它會存儲的數量非常大。我猜想另一個選擇是用我最初的大數據創建臨時文件,在實際文件中寫入新數據,然後複製臨時文件並將其擦除。如果可能的話,我想我只是尋找一些更方便些的東西。不幸的是,改變獲取數據的方式並不是一種選擇。有了這個代碼:重置ofstream,但保留以前的數據

#include <iostream> 
#include <fstream> 

using namespace std; 

int main(int argc, const char * argv[]) 
{ 
    ofstream out_stream("~/Desktop/test_out.txt"); 
    out_stream << 
    "This is some test file\n" << 
    "I want to reset stream\n" << 
    "Start working......now\n"; 

    out_stream.seekp(0, ios_base::beg);//this sets to beginning but erases old data 

    out_stream << 
    "I hope this workssssss\n"; 

    out_stream.close(); 
    return 0; 
} 

我想這樣的輸出:

I hope this workssssss 
This is some test file 
I want to reset stream 
Start working......now 

回答

1

你似乎想「前面加上」文本文件。這是不可能的。新文本將覆蓋已有的內容。

您必須將新文本寫入新文件,然後將文本從原始文件寫入新文件。