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; }
Boost 직렬화는 유연성을 제공합니다. 포인터 직렬화, 파생 클래스, 바이너리 및 텍스트 모드 지원을 포함한 옵션. STL 컨테이너도 손쉽게 처리됩니다.
위 내용은 Boost.Serialization은 C에서 객체 직렬화를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!