在二进制文件中编写std :: map,它具有struct类型的值而没有boost

时间:2016-05-04 06:55:22

标签: c++ stl

#include <fstream>
#include <map>

using namespace std;

typedef struct
{
    int a;
    int b;
}stru;

int main()
{
    stru s;
    s.a = 1;
    s.b = 2;
    map<int, stru> m;
    m.insert(make_pair(22, s));
    ofstream os("test");
    int sizeOfStruct = sizeof(stru);
    std::map<int, stru>::iterator itr;
    for(itr = m.begin(); itr != m.end(); itr++)
    {
      os.write((char*)(&(itr->first)), sizeof(int));
      os.write((char*)(&sizeOfStruct), sizeof(int));
      os.write(itr->second, sizeOfStruct);
    }
}

对于此代码,我收到以下错误:

mapOnfile.cc: In function ?int main()?: mapOnfile.cc:29: error: no
matching function for call to ?std::basic_ofstream<char,
std::char_traits<char> >::write(stru&, int&)?
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/ostream.tcc:483:
note: candidates are: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::write(const _CharT*,
std::streamsize) [with _CharT = char, _Traits =
std::char_traits<char>]

请帮帮我,如何在二进制文件中保存这种类型的地图 图

请不要提供任何Boost序列化答案。

0 个答案:

没有答案