1

我正在尝试将数据从结构复制到另一个。每个结构可以处理的字节相同。我的声明和 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));

出现错误时我无法编译。有任何想法吗?还有其他复制数据的方法吗?

4

2 回答 2

7

您需要&在两个结构上使用:

memcpy(&Data2, &Data1, sizeof(_Store));

当心:_Store包含CString成员变量(如果它像 MFC CString)不可按位复制。您应该只memcpy()在可按位复制的类型上使用,否则您可能会遇到未定义的行为。

于 2010-12-14T11:18:54.813 回答
2

显而易见的另一种方法是简单赋值,即 Data2 = Data1;

这使您不必关心 _Store 结构中有多少字节,也不必关心 CString 是否有运算符 =。

于 2010-12-14T11:32:51.310 回答