Как можно безопасно сериализовать std:: basic_istream<char>:: pos_type?
В одном из моих проектов я должен кэшировать информацию о местоположении определенных фрагментов данных, найденных в больших файлах. Я уже реализовал небольшой API, построенный вокруг std::basic_istream<char>::pos_type
размещены на картах.
Теперь мне нужно сериализовать эти дескрипторы в поток байтов и записать их на диск для дальнейшего использования (также на других *nix-машинах). Я читал, что этот тип зависит от платформы, но все же является POD-типом. Итак, мои вопросы:
- Не лучше ли будет что-то сохранить помимо просто смещений? Например
std::fpos<std::mbstate_t>
сохраняя состояние структуры чтения? - Как можно безопасно получить и восстановить данные смещения из
std::basic_istream<char>::pos_type
(и другая информация, если это необходимо)?
Заранее спасибо.
1 ответ
Структура std::fpos<mbstate_t>
не указано и может быть нетривиальное состояние в mbstate_t
, Вы, конечно, не можете портативно сериализовать эти объекты. Вы можете получить значение типа смещения (std::streamoff
), который является целочисленным типом, и его значение может быть сериализовано.