У меня есть эта маленькая программа.
#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
должен стремиться к концу потока сразу после открытия .