Giriş
Şu satırı dahil ederiz.
Bu sınıfa stream gibi davranmak doğru değil. Açıklaması şöyle.
Constructor
Şu satırı dahil ederiz.
#include <boost/archive/binary_iarchive.hpp>
Açıklaması şöyle. Yani Windows'taki çıktı Linux'ta kullanılamaz.Boost's builtin binary archive is not portable. It says so in the documentation.Gerekiyorsa EOS Portable Archive kullanılabilir.
Bu sınıfa stream gibi davranmak doğru değil. Açıklaması şöyle.
Archives are not "random access". They're complete storage formats with a header and (possibly) closing sequence.
If you create an archive to contain 10 records, you'll [have to] read that whole archive. Of course you can stop mid-way, because, you know, you didn't need to read the rest yet. But of course you can't expect to read the rest later, as if a whole new archive were starting at that point, because there isn't. The result is Undefined Behaviour.
Constructor
Bir stream nesnesi ile ilklendirmek gerekir. Stream nesnesi STL stream olabileceği gibi boost::iostreams kütüphanesindeki stream sınıfları da olabilir.
Örnek
Şöyle yaparız. Dosyayı binary olarak açmak gerekir.
Boost Streamleri ile okuma işlemi için şöyle yaparız.
Örnek
Şöyle yaparız. Dosyayı binary olarak açmak gerekir.
char *fileName = ...;
std::ifstream ifs (fileName, std::ios::binary);
if (!ifs) {
cout << "Read Error" << endl;
}
try {
boost::archive::binary_iarchive ia(ifs);
...
}
catch (boost::archive::archive_exception e) {
cout << "BOOST ERROR " << e.what() << std::endl;
}
ÖrnekBoost Streamleri ile okuma işlemi için şöyle yaparız.
boost::iostreams::stream<source> stream;...
ba::binary_iarchive ia (stream);
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
basic_array_source<char> source = ...;
stream<basic_array_source<char>> stream (source);
ba::binary_iarchive ia (stream);
operator >> metodu - primitiveŞöyle yaparız.
int value = 0;
ia >> value;
operator >> metodu - STLŞöyle yaparız.
vector<ObjectDTO> objects;
ia >> objects;
Hiç yorum yok:
Yorum Gönder