![](/img/trans.png)
[英]How do I serialize a Boost scoped_array using Boost serialization?
[英]How do I serialize better using boost?
我正在使用 boost C++ 庫將數據序列化為二進制和文本文件。 但是在序列化數據時,它添加了我不想要的標題。 有沒有辦法刪除這些標題? 例如 :
#include <boost/archive/text_oarchive.hpp>
#include <fstream>
class Frame{
public:
int x;
int y;
int z;
};
template <typename Archive>
void serialize(Archive& ar, Frame& f, const unsigned int version) {
ar& f.x;
ar& f.y;
ar& f.z;
}
uint32_t main () {
Frame f={1,2,3};
std::ofstream ofs;
ofs.open("TextFile.txt",std::ios::out);
boost::archive::text_oarchive write(ofs,boost::archive::no_header);
write << f;
ofs.close();
}
它的結果將是:
00 1 2 3
但我想要的是:
1 2 3
即使在創建 text_oarchive 對象時使用 no_header 后,它仍然給出這個“00”,我想擺脫它。 那么,如何去除這個呢?
像其他人一樣,我認為您不應該將 Boost Archives 與流混淆。 只是...自己編寫代碼。
但是,如果這有幫助, https://www.boost.org/doc/libs/release/libs/serialization/doc/traits.html展示了如何抑制版本信息:
#include <boost/archive/text_oarchive.hpp>
#include <iostream>
using boost::archive::archive_flags;
struct Frame {
int x, y, z;
void serialize(auto& ar, unsigned) { ar& x& y& z; }
};
BOOST_CLASS_IMPLEMENTATION(Frame, boost::serialization::level_type::object_serializable)
int main()
{
boost::archive::text_oarchive oa(std::cout, archive_flags::no_header);
oa << Frame {1, 2, 3};
}
印刷
1 2 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.