在 C++ 中将 Slice 对象显式序列化为字符串或 ostream

Explicitly serialize Slice object to string or ostream in C++

有没有办法使用 ice 将 Slice 对象显式序列化为字符串?问题是有一个对象必须可以由 json / xml / ice 发送,并且由于 ice 在 Ice(Slice) 的规范语言中已经有一个平台无关的对象,所以没有必要包含另一个库,如 protobuf。但据我所知,无法显式序列化对象。我错了吗?

您可以使用 OutputStream 以 Ice 二进制格式序列化对象 API

Ice::ByteSeq inParams, outParams;
Ice::OutputStream out(communicator);
out.startEncapsulation();
Demo::CPtr c = new Demo::C;
c->s.name = "blue";
c->s.value = Demo::blue;
out.write(c);
out.writePendingValues();
out.endEncapsulation();
out.finished(inParams);

ice-demos 存储库中还有其他示例 https://github.com/zeroc-ice/ice-demos/tree/3.7/cpp98/Ice/invoke

可以在 https://doc.zeroc.com/ice/3.7/client-server-features/dynamic-ice/streaming-interfaces/c++-streaming-interfaces/the-outputstream-interface-in-c++

找到 OutputStream 的文档