Giriş
Şu satırı dahil ederiz.
Constructor - std::cout
Şöyle yaparız.
Örnek
Elimizde bir sınıf olsun. Şöyle yaparız.
Şöyle yaparız.
İki veya daha fazla kez << metodunu çağırabiliriz. Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/archive/text_oarchive.hpp>
boost serialization kendi "pluggable archive format" yapımızı kullanabilmye imkan tanır. Boost serialization dışında C++11 ile çalışan Cereal serialization kütüphanesi de iyiConstructor - std::cout
Şöyle yaparız.
Şöyle yaparız.boost::archive::text_oarchive ar (std::cout);
Constructor - std::ofstream
Şöyle yaparız.
std::ofstream osf ("test.txt", std::ios::binary);
boost::archive::text_oarchive ar (ofs);
Dosyanın otomatik kapanması için blok içinde kullanmak gerekebilir. Şöyle yaparız.
{
Foo foo;
...
std::ofstream ofs("foo.txt");
boost::archive::text_oarchive ar (ofs);
ar << foo;
}
Constructor - std::ostringstreamstd::ostringstream os;
boost::archive::text_oarchive ar (os);
Constructor - boost::asio::ip::tcp::iostreamŞöyle yaparız.
boost::asio::ip::tcp::iostream stream("127.0.0.1", "3000");
boost::archive::text_oarchive archive(stream);
...
stream.close();
operator << metoduÖrnek
Elimizde bir sınıf olsun. Şöyle yaparız.
MyClass obj;
obj.a = "hello";
obj.b = "world";
ar & msg;
Örnek
Elimizde bir variant olsun. Şöyle yaparız.
Elimizde bir variant olsun. Şöyle yaparız.
using V = boost::variant<std::string, double, int>;
ar << std::vector<V> { 3.14, "std::string", 42 };
Çıktı olarak şunu alırız.
22 serialization::archive 14 0 0 3 0 0 0 1 3.14000000000000012e+00 0
11 std::string 2 42
ÖrnekŞöyle yaparız.
oa << boost::serialization::make_nvp("foo",foo);
Örnekİki veya daha fazla kez << metodunu çağırabiliriz. Şöyle yaparız.
boost::archive::text_oarchive oa (ofs);
// write class instance to archive
oa << g <<g1;
register_type metoduŞöyle yaparız.
oa.register_type<Foo>();
Sanırım aynı şeyi şöyle de yapabiliyoruz.friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar.template register_type<Foo>();
...
}
Hiç yorum yok:
Yorum Gönder