使用boost库进行序列化
Serialization using boost library
我正在尝试使用boost库来序列化std::map,以便可以将其存储在文件中。然而,我有如此奇怪的行为(我猜)。下面是我的代码:
#include <map>
#include <fstream>
#include <iostream>
#include <bitset>
#include <boost/serialization/map.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
std::map<int,int> map = {{65,2}, {69,1}, {75,1} ,{77,1}, {82,1}, {84,2}, {89,2}};
void saveMapToFile(std::ofstream& f);
int main()
{
std::ofstream f("test.txt", std::ios::binary);
saveMapToFile(f);
std::cout << "position: " << f.tellp() << std::endl;
}
void saveMapToFile(std::ofstream& f)
{
std::cout << "position : " << f.tellp() << std::endl;
boost::archive::text_oarchive oarch(f);
std::cout << "position : " << f.tellp() << std::endl;
oarch << map;
std::cout << "position : " << f.tellp() << std::endl;
}
下面是上面代码的输出:
position : 0
position : 28
position : 75
position: 76
谁能给我解释一下这里发生了什么?为什么位置后插入映射(在功能)在不同的外部?我没有做任何额外的操作,但指针又向前移动了一个字节……我错过什么了吗?提前感谢您的帮助
我不明白您为什么要对存档格式的实现做出假设。
归档文件写头文件,也可以写"尾文件"(想想XML归档文件)。
oarch
的析构函数写入另一个字节,完成流。它可以是前哨,校验和,换行符等
相关文章:
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- C++boost序列化多态性问题
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- 如何在 boost::asio 中将打包的结构作为消息传递?(无序列化)
- 如何使用 Boost 序列化mersenne_twister_engine?
- boost::序列化中的派生类偏移量计算.有效吗?
- C++ Boost - 序列化错误 - 将"const B"作为"this"参数
- 序列化模式类似于boost::序列化
- 序列化和反序列化boost共享指针
- 使用 Boost::Serialization 序列化具有 std::mt19937_64 成员的类
- boost::container::vector 无法用谷物序列化?
- 使用 Boost 对具有 const 成员的类进行序列化
- 使用 boost::序列化代码将 *this 传递给模板函数会产生错误
- C++ 从 Boost object_pool构造的指针的 Boost 二进制序列化
- 如何使用谷物序列化 boost::p tr_vector
- 如何用谷物序列化 boost::uuid
- 派生类行程的序列化Boost断言
- 如何使用Boost序列化来序列化Boost scoped_array
- 如何序列化 <boost::shared_ptr<void *>> 类型的列表变量
- 我如何重载序列化boost函数,使其一个用于文件存储,另一个用于tcp消息