微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

boost :: archive :: binary_oarchive =程序崩溃?

我有一个使用boost::archive::binary_oarchive 。 在执行程序时,当实例化ia >> boost::serialization::make_binary_object(buffer,size)时,程序崩溃。 使用boost::archive::text_oarchive它可以工作…

#include <boost/archive/binary_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> #include <boost/serialization/string.hpp> #include <boost/serialization/binary_object.hpp> #include <iostream> #include <fstream> using namespace std; void save() { size_t size = 0; std::ifstream infile("any_file.png",std::ios::in | std::ios::binary | std::ios::ate); if (infile.is_open()) { size = infile.tellg(); char *buffer = new char[size]; infile.seekg(0,ios::beg); infile.read(buffer,size); infile.close(); std::ofstream file("archiv.bin"); boost::archive::binary_oarchive oa(file); oa << size; oa << boost::serialization::make_binary_object(buffer,size); file.close(); delete [] buffer; } } void load() { size_t size = 0; std::ifstream file("archiv.bin"); boost::archive::binary_iarchive ia(file); ia >> size; char *buffer = new char[size]; ia >> boost::serialization::make_binary_object(buffer,size); //program crash file.close(); ofstream outfile("any_file_out.png",ios::out | ios::binary); for(size_t i = 0; i < size; i++) { outfile << buffer[i]; } outfile.close(); delete [] buffer; } int main() { save(); load(); return 0; }

先谢谢你!

编辑:这是如何工作的。

... std::ofstream file("archiv.bin",ios_base::binary); ... std::ifstream file("archiv.bin",ios_base::binary); ...

如何在C ++中使用inheritance对类进行序列化

用于将串行端口数据存储在固件中的数据结构

从未知文件提取序列化的数据

文件元数据存储在额外的文件

Linux上的C ++串口。 在串口上可以同时读写吗?

C#JSON对象不会反序列化

在实现video游戏的基本二进制序列化时,可移植性是否需要担心?

文件描述符上使用fwrite /将文件描述符转换为文件指针

在C ++中跨进程边界发送对象的深层副本

我如何序列化System.Security.AccessControl.FileSecurity

解决方案呈现本身:)

... std::ofstream file("archiv.bin",ios_base::binary); ...

现在完美的工作!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐