person pers;
pers.getData();
fstream fs("person.txt", ios::out | ios::in | ios::binary | ios::app);
fs.write((char*)&pers, sizeof(pers));
Я пытаюсь понять, почему адрес объекта (& pers) должен быть отнесен к указателю на символ во время записи в файл?
Потому что то, как объявляется write
:
basic_ostream& write(const char_type* s, streamsize n);
Он записывает массив символов в поток. Если вы хотите (ab) использовать его для написания байтов какого-либо другого типа, вам понадобится хитрость, чтобы притворяться массивом символов.
Лично я бы использовал reinterpret_cast
: это немного менее опасно и более очевидно, чем приведение в стиле C.
потому что fstream.write
требует char*
качестве первого аргумента.
ostream& write (const char* s, streamsize n);
write()
требует, чтобы его первый аргумент былchar *