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();