给定一条收到的 zeromq 消息:
zmq_msg_t messageIn;
int rc = zmq_msg_init(&messageIn);
rc = zmq_msg_recv(&messageIn, socket, 0);
我想访问传入的消息数据并将其存储到;
std::vector<char> inMsg;
试试这个;
std::memcpy(&inMsg, zmq_msg_data(&messageIn), zmq_msg_size(&messageIn));
没用。任何人都可以就如何实现这一目标提出建议吗?
最佳答案
它不起作用的原因是因为您似乎没有将 vector
的大小调整为要复制到其中的数据的容量。它也不起作用,因为您将 vector
对象的地址传递给 memcpy
而不是 vector
的数据地址存储。 vector
对象通常只包含两个指针,指向它管理的存储的开始和结束。您想要访问的是指向该存储的指针,您可以使用 &inMsg[0]
或在 C++11 inMsg.data()
中获取它。
所以尝试:
std::vector<char> inMsg(zmq_msg_size(&messageIn));
std::memcpy(inMsg.data(), zmq_msg_data(&messageIn), zmq_msg_size(&messageIn));
关于c++ - 获取 zeromq 消息数据到 std::vector<char>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26820715/