C++ boost Serialize归档文件转换为字符
我已使用以下代码成功序列化了一个对象:C++ boost Serialize归档文件转换为字符,c++,serialization,boost,C++,Serialization,Boost,我已使用以下代码成功序列化了一个对象: void aTodo::SendBack(protocolBaseServer & in){ std::ostringstream archive_stream; boost::archive::text_oarchive archive(archive_stream); archive << *this; std::string outbound_data=archive_stream.str(); //typ
void aTodo::SendBack(protocolBaseServer & in){
std::ostringstream archive_stream;
boost::archive::text_oarchive archive(archive_stream);
archive << *this;
std::string outbound_data=archive_stream.str();
//type needs to be first for factory to create correct object
outbound_data=_initType+outbound_data;
//now just send it along us
in.DoWrite(outbound_data);
}
有趣的是,准备要发送的字符串的函数实际上输出了下面的“outbound.c:”:
void-aTodo::SendBack(protocolBaseServer&in){
std::ostringstream归档文件\u流;
{
boost::archive::text\u oarchive归档(归档流);
归档在使用结果之前,可能需要关闭归档:
{
boost::archive::text_oarchive archive(archive_stream);
archive << *this;
}
archive_stream.flush();
std::string outbound_data=archive_stream.str();
{
boost::archive::text\u oarchive归档(归档流);
存档我添加了齐平括号和花括号,但在编辑的_totalMessage.data()输出中仍然没有得到任何结果:。还有其他问题。我开始怀疑你的程序中存在generl
writing :
Size to write: 38
wrote :22 serialization::archive 12 0 0 0 0
void aTodo::SendBack(protocolBaseServer & in){
std::ostringstream archive_stream;
{
boost::archive::text_oarchive archive(archive_stream);
archive << *this;
}
archive_stream.flush();
std::string outbound_data=archive_stream.str();
//type needs to be first for factory to create correct object
std::cout << "outbound: " << outbound_data << std::endl;
std::cout << "outbound.c: " << outbound_data.c_str() << std::endl;
outbound_data=_initType+outbound_data;
//now just send it along us
in.DoWrite(outbound_data);
}
void aTodo::SendBack(protocolBaseServer & in){
std::ostringstream archive_stream;
{
boost::archive::text_oarchive archive(archive_stream);
archive << *this;
}
archive_stream.flush();
std::string outbound_data=archive_stream.str();
//type needs to be first for factory to create correct object
std::cout << "outbound: " << outbound_data << std::endl;
std::cout << "outbound.c: " << outbound_data.c_str() << std::endl;
outbound_data=_initType+outbound_data;
//now just send it along us
in.DoWrite(outbound_data);
}
{
boost::archive::text_oarchive archive(archive_stream);
archive << *this;
}
archive_stream.flush();
std::string outbound_data=archive_stream.str();