シリアル化は、オブジェクトを保存または送信できるバイト ストリームに変換するプロセスです。これは、ネットワーク経由でオブジェクトを送信したり、オブジェクトをストレージに保存したりする場合に役立ちます。 C では、シリアル化には複数のアプローチがあり、最も人気のあるものの 1 つは Boost Serialization Library です。
Boost Serialization は、C でのシリアル化のための強力で柔軟なフレームワークを提供します。個々のオブジェクトと、ポインターや派生クラスを含む複雑なデータ構造の両方のシリアル化をサポートします。ブースト シリアル化を使用するには、まずシリアル化可能なクラスを宣言する必要があります。これには、オブジェクトのデータをストリームに書き込む方法とストリームから読み取る方法を指定する Serialize() メソッドの定義が含まれます。
#include <boost/archive/binary_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> class gps_position { private: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & degrees; ar & minutes; ar & seconds; } int degrees; int minutes; float seconds; public: 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); // create class instance to store deserialized object gps_position g_deserialized; // read class instance from archive { boost::archive::binary_iarchive ia(ifs); ia >> g_deserialized; // archive and stream closed when destructors are called }
上記に加えて、Boost Serialization は、ポインタ、派生クラスを処理し、バイナリとバイナリのどちらかを選択するためのメカニズムも提供します。テキスト連載。追加設定なしで、すべての STL コンテナをサポートします。
以上がBoost シリアル化により C オブジェクトのシリアル化と逆シリアル化がどのように簡素化されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。