Re: Запись в файл бинарных данных
От: okman Беларусь https://searchinform.ru/
Дата: 14.06.11 14:33
Оценка: -1
Здравствуйте, silart, Вы писали:

S>Добрый день!


S>Мне нужно записывать в файл бинарные данные заданного формата, к примеру

S>вот такую структуру:

S>
S>struct Frame
S>{
S>int param1;
S>double param2;
S>char param3;
S>};
S>


S>Формат структуры задает формат файла.

S>Для непосредственно записи будет использоваться библиотека потоков iostream.
S>Понятно, что для записи данной структуры в файл нужно либо выводить поочередно все поля, либо выравнить структуру по границе одного байта, чтобы в файл попали байты только структуры.

S>Вопрос в следующем:


S>

S>Как сделать запись (и чтение) в файл платформенно независимым?
S>

S>Ведь если программу откомпилировать для 64-разрядного процессора, размер структуры в байтах будет другим, по сравнению с 32-разрядным процессором.
S>Нужно чтобы формат файла был один для разных платворм.

S>Как сделать это наиболее красиво?


Первый и очевидный вариант — отказаться от бинарного формата в пользу, скажем, того же XML.
Например, с помощью такого подхода можно сохранять настройки 32-битной версии программы, а
потом вводить их в 64-битную, не получая при этом конфликтов.

Второй вариант — применять только типы фиксированного размера.
Обычно делается это с помощью typedef/#define и директив условной компиляции, так как далеко не
все типы стандартного C++ подходят на эту роль.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.