在C ++开发方面相对较新,特别是序列化。
我有一个网络应用程序,它使用ZeroMQ接收序列化消息,检查其中一个字段,如果有特定值,则使用ZeroMQ将消息再次转发给另一个客户端。
因此,函数A接收消息并将其存储到字符串指针:
void A()
{
std::string* serialStr = new string(static_cast<char*>(input->Data()), input->Size());
if(B(serialStr) == "One") {
CreateMessage(const_cast<char*>(serialStr->c_str()), serialStr->length(), cleanup, serialStr));
}
}
cleanup(void *data, void *hint) {delete (string*)hint;}
CreateMessage函数负责实际删除serialStr。
如何在不复制serialStr字符串的情况下调用函数B?像下面这样的东西不起作用:
std::string B(std::string* data)
{
messaging::BMessage* msg = new messaging::BMessage;
msg->ParseFromString(data);
return msg->data();
}
感谢您的帮助!
答案 0 :(得分:0)
引用有什么问题?以及如何复制(并且仅当它是引用或指针时才复制地址)
% create matrix
matrice=zeros(17,9);
matrice(2:16,3:6)=1;
% Plot matrix
imagesc(matrice)
% Color matrix
colormap([1 1 1; 1 0 0])
% Fix axis
axis square