c++ - Memcpy 和结构

标签 c++ arrays vector

我正在努力将以下结构复制到字节数组以通过命名管道发送。我发现自从我从给出静态定义的字节数组切换到 vector 以来,因为我的主机长度将具有不同的长度。

这是我的结构大纲:

        USHORT version;                                 // Header Version
    USHORT type;                                    // IPVersion
    USHORT count;                                   // Number of IP addresses of remote system
    USHORT length;                                  // Header Length (1)
    BYTE SysConfigLocIP[4];
    BYTE SysConfigRemoteIP[4];
    USHORT lengthHost;
    std::vector<BYTE>HostName;

稍后,在填充结构后,我将其复制为一个字节,如下所示:

    BYTE Response[sizeof(aMsg)]
    memcpy(response, &aMsg, sizeof(aMsg))

当我在调试期间检查容器时,我发现我的 vector 数组保存了主机的正确信息。但是,在复制到 Response 字节数组之后,我发现复制的数据完全不同。这是一个有效的操作吗,如果是这样,我该怎么做才能正确地将数据从我的 vector 复制到 BYTE 数组。如果没有,我可以使用哪些其他策略来动态调整结构大小以发送主机名?感谢您花时间阅读我的问题,感谢任何反馈。

最佳答案

I'm working to copy the following structure to a byte array to send over a named pipe.

命名管道(或其他形式的进程间或处理器间通信)不理解您的 struct ,他们也不明白vector .他们只是根据 byte-in-byte-out 的概念进行操作.由您(程序员)为这些字节分配意义。

如建议,请阅读连载。尝试从 http://en.wikipedia.org/wiki/Serialization 开始.如果允许,您可以使用 Boost 解决方案,http://www.boost.org/doc/libs/1_55_0/libs/serialization/doc/index.html ,但我仍然鼓励您先了解基础知识。

作为练习,首先尝试传输 vector<int>从发送者到接收者。接收方不得隐式知道 vector 中的元素数。一旦你实现了这一点,从 int 迁移给你的struct将是微不足道的。

关于c++ - Memcpy 和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22871083/

相关文章:

ios - 连接 2 个字符串(或数组)

c++ - 在 C++ 中将文件输入到多个数组

python - 使用数组的前一个结果将许多二维数组乘以向量

c++ - 我们可以控制 vector 数组(c++)中元素的内存分配吗?

r - 在 R 中将两个向量合二为一

C++:字符串流解析

c++ - OpenGL 透视相机

c - 循环改变不在循环内部的字符串?

c++ - 在启动时填充全局静态数组

c++ - QMainWindow 参数