请教ace序列化的问题
我使用了ACE_Message_Block, InputCDR, OutputCDR进行对象的序列化和反序列化,有一个地方比较麻烦,就是每次序列化一个对象,都需要手工的设置内存的读写指针,大家也是这么做的吗?ACE_Message_Block msg;
OutputCDR os(msg);
os << str1;
msg.write(str1.length();//这个太麻烦,大家有什么好的解决方案吗?
os << str2; 顶,没有人碰到这样的问题吗 都是这样的吧。不然字符串怎么知道长度。要么就用\0结束符默认了。 str1,str2是ACE_CString类型么?
msg.write(str1.length()是msg.wr_ptr(str1.length()么?
为什么要移动写指针呢?没有必要吧。ACE定义好的operator<<()都已经做过了这个移动。
如果你是自己重载的operator<<(),只要你的类成员的operator<<()都是用的ACE定义好的operator<<(),也一样不用动。
页:
[1]