我想知道如何总是写一个文件的第一行。 我有通过文本文件分享的数字到另一个软件,我想在第一行定期写这些数字。
感谢。
EO
答案 0 :(得分:3)
如果要完全重写文件,丢弃其内容,则只需使用trunc
模式。但是,如果您要保留任何其他内容,那么最简单的方法是将文件读入内存,更改第一行并将所有内容写回。我认为除非你覆盖相同数量的字符,否则不可能直接更改第一行。
答案 1 :(得分:0)
看看这两个功能:
的ostream&安培; seekp(streampos pos); ostream的和放; seekp(streamoff off,ios_bas:seekdir dir);
答案 2 :(得分:0)
也许这可以解决你的问题
ofstream out("foo.txt");
out << "foo";
out << "\r" << "bar";
这将留下一个只有栏的文件。
第二种方法:
如果文件只包含一行,您可以使用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
}