2012-05-10 73 views
0

我想知道如何總是寫入文件的第一行。 我有數字通過文本文件共享到另一個軟,我想在第一行定期寫這些數字。C++ ofstream:總是寫在第一行

謝謝。

EO

+0

也許我錯了,但'seekp'-方法設置放置指針。 – gaussblurinc

+0

你想替換第一行還是先插入新行? – dwalter

+0

@dwalter我想用'seekp'-方法替換行 – eouti

回答

0

看這兩個功能:

ostream的& seekp(的streampos POS); ostream & seekp(streamoff off,ios_bas:seekdir dir);

0

也許這解決您的問題

ofstream out("foo.txt"); 
out << "foo"; 
out << "\r" << "bar"; 

這將留下一個文件,它只是酒吧。

第二個方法: 如果該文件只包含一個行,你可以用ofstream::trunc打開它,如果你想完全重寫文件關閉它每次寫

3

後,丟棄它的內容則簡單地使用trunc模式。但是,如果還有其他內容需要保存,那麼最簡單的方法是將文件讀入內存,更改第一行並將所有內容寫回。我認爲不可能直接改變第一行,除非你覆蓋了相同數量的字符。

0

如果文件不是很大,那麼除了自定義的第一行之外,您可以在每行上覆制一個新的文件。然後,替換原件。

void ReplaceFirstLine(string filename) 
{ 
ifstream infile; 
ofstream outfile; 
infile.open(filename.c_str(), ios_base::in); 
outfile.open("tempname.txt", ios_base::out); 

bool first = true; 
string s; 
while (getline(infile, s, '\n')) 
    { 
    if (first) 
     outfile << "my new first line\n"; 
    else 
     outfile << s << endl; 
    first = false; 
    } 

infile.close(); 
outfile.close(); 
::CopyFileA("tempname.txt", filename.c_str(), FALSE); // or Linux equivalent 
}