2016-10-11 66 views
1

在我將數據寫入文件的迭代中,我想將數據寫入不同的行。如何尋找一個特定的行來追加數據或追加數據到最後一行C++

看起來像:

0.2 0.3

0.4 0.5 cursor should be here

現在,我將附加數據:

0.6

0.6

,所以我需要備份的第一行追加0.6然後移到旁邊追加3然後0.6

如何使用c + +?我使用ofstream作爲append模式打開文件,現在我正在使用C++和stl C++ 11。 seekp似乎只是移動一個字符步驟而不是一個行的步驟。有任何想法嗎?謝謝。

+1

做它的文件是不是我推薦,因爲每次寫入它時,都會*替換當前的內容。將完整文件讀入內存可能會更容易,然後移動內存。或者在閱讀時修改。或者在(寫)時修改。 –

回答

2

追加模式僅適用於將數據添加到文件的最後,而不是像您想要的那樣放置在中間的位置。

對於這一點,你會非常需要由線到文件拷貝一行,並添加適當數據爲,這東西一般順序:

std::vector<double> additions { 0.6, 3, 0.6 }; 

std::string line; 

for (int i=0; i<3; i++) { 
    std::getline(infile, line); 
    outfile << line; 
    outfile << " " << additions[i]; 
} 
+0

'outfile << line'不會在append模式下覆蓋當前行下的那些行? –

+0

@NickDong:這裏的意圖是從現有文件中讀取數據,並將數據寫入新的(以前是空的)文件。 –