C でのオブジェクトのシリアル化
シリアル化により、オブジェクトをバイト配列に変換し、その送信と再作成が可能になります。 C は Java とは異なり、このプロセスに固有のメカニズムを提供しません。ただし、Boost などのライブラリは、包括的なソリューションを提供します。
Boost シリアル化 API は、オブジェクトのバイト配列への変換を容易にします。次のコード スニペットを考えてみましょう:
#include <boost/archive/binary_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> class gps_position { public: friend class boost::serialization::access; template <class Archive> void serialize(Archive &ar, const unsigned int version) { ar °rees; ar &minutes; ar &seconds; } int degrees; int minutes; float seconds; gps_position(){}; gps_position(int d, int m, float s) : degrees(d), minutes(m), seconds(s) {} };
オブジェクトをシリアル化するには、次の手順に従います:
std::ofstream ofs("filename.dat", std::ios::binary); // create class instance const gps_position g(35, 59, 24.567f); // save data to archive { boost::archive::binary_oarchive oa(ofs); // write class instance to archive oa << g; // archive and stream closed when destructors are called }
逆シリアル化も同様です:
std::ifstream ifs("filename.dat", std::ios::binary); gps_position g; { boost::archive::binary_iarchive ia(ifs); ia >> g; }
ブースト シリアル化は柔軟な機能を提供しますポインタのシリアル化、派生クラス、バイナリ モードとテキスト モードのサポートを含むオプション。 STL コンテナも簡単に処理できます。
以上がBoost.Serialization は C でオブジェクトのシリアル化をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。