Witam wszystkich.
Napisałem sobie program, w którym serializuję klasę zawierającą vector<char>. Dane w wektorze to kolejne bajty pliku, ktory otwieram w trybie tekstowym. Problem polega na tym, że w momencie deserializacji zostaje wyrzucony wyjątek stream error. Mój kod wygląda mniej więcej tak:
//Odbieramy wiadomosc jaka zostala wyslana
char buf[256];
unsigned int len = 256;
std::stringbuf buf1;
while (len == 256) {
len = socket.receive(boost::asio::buffer(buf));
buf1.sputn(buf, len);
}
// odczytujemy odebrana wiadomosc
std::string content = buf1.str();
std::istream input(&buf1);
boost::archive::text_iarchive ia(input);
Messages::ResourcePart* ret_val_resprt = new Messages::ResourcePart();
try {
ia >> (*ret_val_resprt);
} catch (boost::archive::archive_exception& e) {
std::cerr << "produceMessage - corrupted archive (resource part)\nwhat: " << e.what() << std::endl;
}
return ret_val_resprt;
Co ciekawe wyjątek nie jest wyrzucany, jeśli po odebraniu do buf1 całej wiadomości wyświetlę ją poprzez std::cout<<buf1.str() - ale pliki ktore przesyłam i tak są uszkodzone. Ma ktoś jakiś pomysł o co może tutaj chodzić?