Скажем, у меня есть
struct S{
int m[10];
};
Я могу легко сохранить это в файле, просто используя:
S s;
file.write(reinterpret_cast<char*>(&s), sizeof(S));
Но что, если у меня есть динамические массивы внутри структуры? Есть ли более простой способ сохранить структуру с массивами в файл, без необходимости перебирать каждый элемент внутри каждого массива в структуре?
struct S2{
int *p;
int *t;
};
Нет, нет. И вы не должны писать в файл так, как вы продемонстрировали. Вы должны всегда сериализовать каждого члена отдельно.
Классы и структуры могут иметь отступы. Если вы выписываете структуру из одной версии программы и читаете ее при использовании другой версии программы, размер и макет структуры могут не совпадать. Это также верно, если у вас есть приложение с кросс-платформой или если разные программы читают/записывают этот файл. Сериализация каждого члена по отдельности также дает вам возможность обмениваться контентом, если это необходимо для сетевых/межплатформенных целей.
S
не управляет порядком байтов.