Если вы не возражаете против действительно низкого уровня, вы можете просто скопировать структуры внутрь и наружу, приведя указатель на структуру к void*
и используя sizeof()
, чтобы получить длину структуры. (IIRC - это способ выгрузить / прочитать пустой буфер в / из файла)
Обратите внимание, это ТОЛЬКО работает, если данные не имеют указателей / ссылок / и т.д.
Мне нравится C's IO лучше, чем C ++, поэтому:
typedef struct { int hi; int mon; char[35] dat; } S;
S s;
S arr[22];
int f;
// write
f = open(/* I forget the args*/);
// one
if(sizeof(s) != write(f, &s, sizeof(s))) Error();
// many
if(sizeof(arr) != write(f, arr, sizeof(arr))) Error();
close(f);
// read
f = open(/* I forget the args*/);
// one
if(sizeof(s) != read(f, &s, sizeof(s))) Error();
// many
if(sizeof(arr) != read(f, arr, sizeof(arr))) Error();
close(f);