c++ - 将结构复制到不同的结构

标签 c++ c memcpy

我想知道是否有一种优雅的方法将一个结构复制到另一个结构,其中第二个结构基本上与原始结构相同,除了没有最后一个字段。

例如,

struct A {
    int a;
    int b;
    int c;
};
struct B {
    int a;
};

struct A v1;
struct B v2;

会,

memcpy(&v2, &v1, sizeof(v2));

实现我想要的功能吗? v2 的哪里具有最初在 v1 中找到的“a”值?

谢谢

最佳答案

如果您不复制 A 中的所有字节,而是仅复制 B 期望的字节数,您将获得所需的结果:

memcpy(&v2, &v1, sizeof(v2)); // remember that the first argument is the destination

但是,这不是好的编码风格。通过这个最小的代码示例,很难说清楚,但您可能希望 A 从 B 继承,以便您可以转换两者而无需物理复制内存。

否则,这会更容易、更干净:

b2.a = v1.a;

关于c++ - 将结构复制到不同的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787223/

相关文章:

c++ - 有没有感觉 c++ 有时会减少解决问题的时间并增加句法、语义的严谨性?

c++ - stringstream 内部是如何工作的?

c - C中的动态数组导致段错误

c - 位图文件的填充

c++ - 使用 memcpy() 函数将字节从 unsigned char 数组放入 std::string

c++ - 如何在 boost::unique_lock<boost::mutex> 上尝试锁定

c++ - 捕获从端口音频写入输出音频设备的音频输出

c - 在 C 中拆分字符串以识别连续的制表符

c - 如何将 memcpy 转换为 memcpy_s?

动态数组的 C memcpy 行为