Я смотрел на SO сообщение Неопределенность режимов открытия потока файлов C ++. Я хотел знать режим открытия файла по умолчанию для fstream. Один из ответов говорит:
Из вышесказанного следует, что следующий код открывает файл с
точно такие же открытые флаги fstream f («a.txt», ios_base :: in |
ios_base :: из); ifstream g («a.txt», ios_base :: out); ofstream
h («a.txt», ios_base :: in);
Так что, если я правильно понимаю, в случае, если я создаю объект fstream, я должен иметь возможность либо читать, либо писать.
Но ниже код не записывает никаких данных в файл
fstream testFile1;
testFile1.open("text1.txt");
testFile1<<"Writing data to file";
testFile1.close();
Однако режим добавления, как указано ниже, создает текстовый файл с данными «Запись данных в файл».
testFile1.open("text1.txt", ios::out);
Так ли режим по умолчанию определяется реализацией? Я использую набор инструментов TDM-GCC-64.
Режим по умолчанию ifstream
является in
, Режим по умолчанию ofstream
является out
, Вот почему они названы так. fstream
имеет нет режим по умолчанию.
Ваш пример показывает только два значения по умолчанию, и это показывает, что без явных аргументов. Тот fstream f("a.txt", ios_base::in | ios_base::out)
использует два явных аргумента именно потому, что нет режима по умолчанию.
Других решений пока нет …