我有这个小程序。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream f("file.txt", ios::out);
f << "Hello world!" << endl;
f.close();
fstream atEnd("file.txt", ios::out | ios::ate);
cout << "Position: " << atEnd.tellp() << endl;
atEnd << "You too" << endl;
atEnd.close();
return 0;
}
它应该打开文件,向其中写入一些内容,然后将其关闭,然后在末尾再次重新打开,因此应在文件末尾附加“您也”字样。但是位置始终为0,并且内容被重写:https://www.onlinegdb.com/online_c++_compiler。为什么会这样?根据文档,ios::ate
应该在打开后立即搜索到流的结尾。
答案 0 :(得分:0)
我认为追加模式足以满足您的要求:
fstream f.open("file.txt", ios::app );
或者,您也可以在编写之前使用seekp,尽管不是首选。