Я не уверен, что пойму ваш вопрос, но если вы добавите элемент данных fstream foo;
после name
в ваш class student
, то этот участник также будет записан.Однако написание fstream
обычно бессмысленно, потому что (по крайней мере, в системах Unix) открытые файлы не остаются открытыми после завершения процесса.Вы должны спросить себя, что произойдет, когда вы снова прочитаете эти данные (и как вы их прочитаете).Чтение fstream
, которое вы написали таким образом, не имеет смысла.
И запись двоичных данных обычно является ошибкой, когда это делает новичок.Дело в том, что двоичные данные очень хрупкие.Например, в вашем примере вы можете позже захотеть увеличить размер name[20]
до более высокого значения (например, name[32]
), потому что вы полагаете, что у некоторых людей действительно длинные имена.Если вы это сделали, и если вы записали все данные для своей школы в двоичном виде (когда приложение использовало name[20]
), вы не сможете прочитать их обратно (без кодирования процедур преобразования) с приложением, имя котороговырос до name[32]
.
Именно поэтому обычно целесообразно использовать какой-либо инструмент более высокого уровня (например, базу данных, такую как MySQL) или представлять долговременные данные в текстовых формах, используя стандарты, такие как * 1014.* XML или JSON или YAML .Конечно, у него есть недостатки: чтение и запись данных сложнее в коде и медленнее в исполнении.Но текстовые данные легче отлаживать, поскольку программист может просматривать их в обычных редакторах.