当前位置: 首页 > 知识库问答 >
问题:

将结构的动态数组复制到另一个结构的动态数组

吴兴国
2023-03-14

我正试图将一个动态结构数组的内容复制到另一个动态结构数组中,但我得到了一个错误,“无效的数组赋值”,希望有人能给我指明正确的方向。

下面是我的结构:

struct Agent
{
    char name[C_STRING_SIZE];
    int idNum;
    double years;
    char location[C_STRING_SIZE];
};

我的功能:

Agent *copyEncryptArray(Agent *agentArr, int numOfAgents)
{
    Agent *encryptArr = new Agent[numOfAgents];
    
    for (int i = 0; i < numOfAgents; i++)
    {
        encryptArr[i].name = agentArr[i].name;
        encryptArr[i].idNum = agentArr[i].idNum;
        encryptArr[i].years = agentArr[i].years;
        encryptArr[i].location = agentArr[i].location;
    }
    
    return encryptArr;
}

最后,我正在尝试加密代理的内容,然后复制到encryptArr,但我现在只是想弄清楚如何复制。这是一个课程,我们还没有涵盖memcpy,所以这不是一个选项。

共有2个答案

颜鸿云
2023-03-14

您应该使用std::string而不是char数组。它是可分配的,有更多的优点,包括几乎不受限制的字符串长度。

struct Agent
{
    std::string name;
    int idNum;
    double years;
    std::string location;
};

如果您由于某种原因不幸被迫使用数组,您将不得不为每个元素赋值。

如果保证数组的内容始终是字符串(由空字符终止的字符序列),则可以使用strcpy()复制它们。

(我将只显示名称的代码,但位置也应该这样处理)

        strcpy(encryptArr[i].name, agentArr[i].name);

如果不能保证这一点,则应使用memmove()(因为此处禁用memcpy())。

        memmove(encryptArr[i].name, agentArr[i].name, sizeof(encryptArr[i].name));

如果memmove()也不幸被禁止,那么最后一个选项是逐个分配元素。

        for (int j = 0; j < C_STRING_SIZE; j++)
        {
            encrypyArr[i].name[j] = agentArr[i].name[j];
        }
山疏珂
2023-03-14

比你想象的要容易。

for (int i = 0; i < numOfAgents; i++)
    encryptArr[i] = agentArr[i];

数组中的每个值都是满足一个“对象”的所有要求的东西,并且可以作为一个整体进行复制/移动。不需要麻烦复制结构的每个成员。

 类似资料:
  • 问题内容: 我正在尝试解组以下YAML(使用gopkg.in/yaml.v2): 使用以下代码: 但这给了我以下错误: 顶级属性是动态的,因此我需要将它们解析为字符串,结构中的所有其他键将始终相同,因此这些部分的结构也是如此。我该如何解析? (完整代码位于https://github.com/tirithen/unit- conversion/blob/master/convert.go#L84

  • 问题内容: 我正在一个项目中使用JSON作为创建Java对象的配置框架。这也是我来自CF / PHP / JS等方面多年经验的第一个专业Java项目。 在将JSON转换为Java时,我能找到的所有资源都基于以下想法:您必须先在Java中手动构建对象,即POJO,然后使用JSON进行填充。 作为网络语言的资深人士,我对此想法感到窒息。我发现编译后的语言起着不同的作用,但是我认为从命令行到机器语言的共

  • 问题内容: 我有两个成员相同,我想将一个结构复制到另一个结构,请参见下面的伪代码: 然后,我有结构的,而结构的,有什么办法复制的? 问题答案: 使用转换更改类型。以下代码使用转换将type 的值复制到type 的值: 游乐场的例子 该转换仅在基础类型,除了结构标签相同的工作。

  • 问题内容: 我有传入的有效负载,无法更改。 我需要获取“数据”的第一个索引并创建一个新的JSON对象,如下所示… 然后从中构建一个,其数据结构的长度为5k个“主机”。我能够将其映射到结构,但需要首先将其转换为这种格式。我了解如何解组JSON,但前提是可以将有效负载转换为上述格式。 问题答案: 我不确定我是否了解您的需求。 可能是这样的事情?可能需要做一些工作,例如使指向结构的指针切片而不是结构的切

  • 动态规划 建议观看MIT算法导论-动态规划中的课程。

  • 问题内容: 有没有办法复制通用结构(即属性名称未知的结构)并跳过单个已知属性? 这是我所知道的: 我函数的参数-我将称为参数-类型。 是一个结构。 具有已知的性质。 具有0到6左右的其他属性,这些属性都不是先验的。 一旦删除该属性,那么“剩余”就是30种可能的结构类型之一。 所以我想剥离出来(或更精确地进行复制,它省略),所以生成的代码的各个位,尝试了结构迫使其可能的类型之一就能成功。 我已经找到