Сохранение структуры с членами массива данных в файл

0

Скажем, у меня есть

struct S{

int m[10];

};

Я могу легко сохранить это в файле, просто используя:

S s;

file.write(reinterpret_cast<char*>(&s), sizeof(S));

Но что, если у меня есть динамические массивы внутри структуры? Есть ли более простой способ сохранить структуру с массивами в файл, без необходимости перебирать каждый элемент внутри каждого массива в структуре?

struct S2{
int *p;
int *t;
};
  • 0
    обратите внимание, что ваш способ сериализации S не управляет порядком байтов.
  • 0
    Вы пытаетесь сгладить структуру. Так что нет.
Показать ещё 3 комментария
Теги:
struct
file-io
dynamic-arrays

1 ответ

2

Нет, нет. И вы не должны писать в файл так, как вы продемонстрировали. Вы должны всегда сериализовать каждого члена отдельно.

Классы и структуры могут иметь отступы. Если вы выписываете структуру из одной версии программы и читаете ее при использовании другой версии программы, размер и макет структуры могут не совпадать. Это также верно, если у вас есть приложение с кросс-платформой или если разные программы читают/записывают этот файл. Сериализация каждого члена по отдельности также дает вам возможность обмениваться контентом, если это необходимо для сетевых/межплатформенных целей.

  • 0
    «Вы всегда должны сериализовать каждого члена отдельно». Вы имеете в виду, что я должен хранить его побайтово? В основном преобразование его в базу 256? Мне не нужно беспокоиться о возможных будущих проблемах с этой программой. Мне просто нужно, чтобы он работал сейчас и был настолько наивным и настолько простым, насколько это возможно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню