ファイルの最初の行にどのように書き込むことができますか? テキストファイルを介して別のソフトに共有する番号があります。これらの番号を最初の行に定期的に書きたいと思います。C++のofstream:常に1行目に書き込みます
ありがとうございました。この二つの機能で
EO
ファイルの最初の行にどのように書き込むことができますか? テキストファイルを介して別のソフトに共有する番号があります。これらの番号を最初の行に定期的に書きたいと思います。C++のofstream:常に1行目に書き込みます
ありがとうございました。この二つの機能で
EO
ルック:
のostream & seekp(たstreamposのPOS)。 ostream & seekp(ストリームオフ、ios_bas:seekdirディレクトリ);
多分これは、これはこれで唯一のバーのファイルを残します
ofstream out("foo.txt");
out << "foo";
out << "\r" << "bar";
あなたの問題を解決します。
第二の方法:それは内容は、単にtrunc
モードを使用します破棄、ファイルは一つだけの行が含まれている 場合はofstream::trunc
でそれを開くことができ、それぞれが
を書きした後、あなたが完全にファイルを書き換えたい場合は、それを閉じます。しかし、保存したい他のコンテンツがある場合は、ファイルをメモリに読み込み、最初の行を変更してすべてを書き戻すのが最も簡単な方法です。同じ量の文字を上書きしない限り、最初の行を直接変更することはできないと思います。
ファイルが大量でない場合は、カスタムの最初の行を除く各行に新しいファイルをコピーして書き込むことができます。その後、元のものと交換してください。
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
}
多分私は間違っていますが、 'seekp'メソッドはputポインタを設定します。 – gaussblurinc
最初の行を置き換えるか、最初に新しい行を挿入しますか? – dwalter
@dwalter – eouti