2012-05-10 5 views
0

ファイルの最初の行にどのように書き込むことができますか? テキストファイルを介して別のソフトに共有する番号があります。これらの番号を最初の行に定期的に書きたいと思います。C++のofstream:常に1行目に書き込みます

ありがとうございました。この二つの機能で

EO

+0

多分私は間違っていますが、 'seekp'メソッドはputポインタを設定します。 – gaussblurinc

+0

最初の行を置き換えるか、最初に新しい行を挿入しますか? – dwalter

+0

@dwalter – eouti

答えて

0

ルック:

のostream & seekp(たstreamposのPOS)。 ostream & seekp(ストリームオフ、ios_bas:seekdirディレクトリ);

0

多分これは、これはこれで唯一のバーのファイルを残します

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

あなたの問題を解決します。

第二の方法:それは内容は、単にtruncモードを使用します破棄、ファイルは一つだけの行が含まれている 場合はofstream::truncでそれを開くことができ、それぞれが

3

を書きした後、あなたが完全にファイルを書き換えたい場合は、それを閉じます。しかし、保存したい他のコンテンツがある場合は、ファイルをメモリに読み込み、最初の行を変更してすべてを書き戻すのが最も簡単な方法です。同じ量の文字を上書きしない限り、最初の行を直接変更することはできないと思います。

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 
} 
関連する問題