std::map があります。
fwriteを使用して1行のようにファイルに書き込むことができるか(ファイルから読み取ることもできるか)、または各値を個別に読み書きする必要があるかどうかを知りたいです。
特別なことは何もないので、これは可能かもしれないと思っていました。
std::map があります。
fwriteを使用して1行のようにファイルに書き込むことができるか(ファイルから読み取ることもできるか)、または各値を個別に読み書きする必要があるかどうかを知りたいです。
特別なことは何もないので、これは可能かもしれないと思っていました。
boost::serialization
1 行にシリアライズするために使用します。ヘッダー:
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_archive
text_archive
マップをシリアル化するワンライナーはありません。各キーと値のペアを個別に記述する必要があります。ただし、これは実際には for ループよりもはるかに複雑ではありません。
ブーストを使用すると、方法があるかもしれませんが、正確な API に精通していません。