ofstream outfile("PERSON.DAT",ios::app| ios::binary);
Начиная со второй строки, создается поток выходных файлов, который затем открывает файл с именем «PERSON.DAT», используя комбинацию из двух режимов; добавить и двоичный. Это означает, что любые данные, отправленные в выходной поток, будут добавлены к существующим данным в файле, вы фактически добавляете данные в файл, а не перезаписываете его. Бинарный режим указывает, что любые данные, записанные в файл, будут интерпретироваться как есть. В Windows есть режим, называемый текстовым режимом, в котором определенные символы, такие как '\ n', переводятся в их эквиваленты Windows. Бинарный режим является стандартным режимом, он просто означает, что все, что вы посылаете в выходной поток, записывается без изменений.
outfile.write(reinterpret_cast<char*>(&pers), sizeof(pers));
Эта команда записывает объект pers в выходной файл. метод write () ожидает два параметра; первый - указатель на серию байтов, которые должны быть записаны в файл, а второй - целое число, указывающее количество байтов из серии, подлежащей записи. Функция reinterpret_cast () преобразует указатель на объект person от person * до char *, который является типом параметра, необходимым для метода записи. sizeof () - это просто функция, которая получает размер объекта в байтах, который, как уже упоминалось, требуется write () .