我正在尝试将数据从结构复制到另一个。每个结构可以处理的字节是相同的。我的声明和memcpy如下:
typedef struct{
CString strNumber;
CString strAlpha;
} _Number;
typedef struct{
CString strIterration;
_Number NumberOne;
_Number NumberTwo;
} _Store;
_Store Data1;
_Store Data2;
现在假设第一个结构Data1有数据,第二个结构只是声明。
我使用以下代码:
memcpy(&Data2, Data1, sizeof(_Store));
我无法编译,因为出现错误。有任何想法吗?还有其他任何复制数据的方法吗?
答案 0 :(得分:7)
您需要在两个结构上使用&
:
memcpy(&Data2, &Data1, sizeof(_Store));
注意:_Store
包含CString
成员变量(如果它类似于MFC CString
)不是按位可复制的。您应该只对可按位复制的类型使用memcpy()
,否则可能会遇到未定义的行为。
答案 1 :(得分:2)
显而易见的其他方法是简单分配,即Data2 = Data1;
这使您无需关心_Store结构中的字节数以及CString是否具有operator =。