16

std::map があります。

fwriteを使用して1行のようにファイルに書き込むことができるか(ファイルから読み取ることもできるか)、または各値を個別に読み書きする必要があるかどうかを知りたいです。

特別なことは何もないので、これは可能かもしれないと思っていました。

4

2 に答える 2

29

boost::serialization1 行にシリアライズするために使用します。ヘッダー:

boost/serialization/map.hpp

コード例

#include <map>
#include <sstream>
#includ  <iostream>
#include <boost/serialization/map.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>

int main()
{
   std::map<int, int> map = {{1,2}, {2,1}};
   std::stringstream ss;
   boost::archive::text_oarchive oarch(ss);
   oarch << map;
   std::map<int, int> new_map;
   boost::archive::text_iarchive iarch(ss);
   iarch >> new_map;
   std::cout << (map == new_map) << std::endl;
}

出力:

g++ -o new new.cpp -std=c++0x -lboost_serialization
./new
1

ファイルの場合は、 の代わりに単に使用し、std::ifstream/std::ofstreamの代わりに ,を使用するstd::stringstreamこともできます。binary_archivetext_archive

于 2013-04-18T06:32:25.437 に答える
1

マップをシリアル化するワンライナーはありません。各キーと値のペアを個別に記述する必要があります。ただし、これは実際には for ループよりもはるかに複雑ではありません。

ブーストを使用すると、方法があるかもしれませんが、正確な API に精通していません。

于 2013-04-18T06:30:38.427 に答える