【发布时间】:2019-02-20 16:43:42
【问题描述】:
我已经编写了一个代码,我在二进制文件中写入一个映射,而不是使用 boost 内存映射读取它,但是每当我显示结果不正确时,它只显示值
1852795252
。我该怎么办?这是我的代码:
#include <iostream>
#include <vector>
#include <utility>
#include <fstream>
#include <utility>
#include <fstream>
#include <iterator>
#include <string>
#include <boost/interprocess/file_mapping.hpp>
#include <boost/interprocess/mapped_region.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <iostream>
#include <fstream>
#include <boost/serialization/map.hpp>
using namespace boost::archive;
using namespace boost::interprocess;
void save()
{
{
std::ofstream file{"archive1.bin"};
text_oarchive oa{file};
std::map<int,int> m;
m[3] = 9;
oa << m;
}
}
void load()
{
file_mapping fm("archive1.bin", read_only);
mapped_region region(fm, read_only);
int * m = (int *)region.get_address();
std::cout<<m[3]<<std::endl;
}
int main()
{
save();
load();
}
【问题讨论】:
-
当您尝试调试您的程序时,您的发现是什么?
-
我找不到任何东西,它没有显示错误或警告消息。
-
现在我对您在这里使用的库一无所知,但令我惊讶的是,您认为您可以将
std::map序列化为文件,然后将其读回,就好像它是一个数组一样。这对我来说似乎很可疑。