在嵌套struct(c ++)中赋值const char *

时间:2014-07-10 09:26:06

标签: c++

我试图在嵌套结构中分配一个const char *值。我想将名称和名字分配给char值,而不是字符串。这是我知道的更多,但我使用的是c ++。 这是我的问题:

struct person {
    const char* name;
    const char* firstname;
};


struct person_struct {
    int pers_num;
    struct person* data;
};

// How does the assignment work?... i know this is wrong:
char name[100] = "Jason";
char firstname[100] = "Conner";
struct person_struct pers_info;
pers_info.pers_num = 1;
pers_info->data->name = new char[strlen(name)+1];
pers_info->data->firstname = new char[strlen(firstname)+1] 

非常感谢你的帮助,大家! : - )

[编辑:

错误:

error: expected constructor, destructor, or type conversion before â.â token
error: expected constructor, destructor, or type conversion before â->â token
error: expected constructor, destructor, or type conversion before â->â token

2 个答案:

答案 0 :(得分:1)

strdup()将是一种方法(将其保持在普通C中)

当然首先需要分配足够数量的人物结构

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct person_ {
  const char* name;
  const char* firstname;
} person;

struct person_struct {
  int pers_num;
  person* data;
} PS;



int main(void) {
  char name[100] = "Jason";
  char firstname[100] = "Conner";

  PS.pers_num=1;
  // added cast here 
  PS.data = (person*)calloc(PS.pers_num, sizeof(person));
  PS.data[0].name = strdup(name);
  PS.data[0].firstname = strdup(firstname);

  puts(PS.data[0].name);
  puts(PS.data[0].firstname);

  return 0;
}

答案 1 :(得分:0)

编译错误是因为你写了pers_info->data;但pers_info不是指针。 ->运算符仅适用于指针。你的意思是pers_info.data

然而,整个设置很糟糕。使用std::string存储字符串。并使data不是指针。然后,所有内存分配都得到了处理,您可以专注于使代码按照您希望的方式执行。