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



我试图在嵌套结构中分配const char*值。我想把name和firstname赋值给一个char值,而不是字符串。这是更多的c我知道,但我使用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

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

当然首先你需要分配足够数量的person结构体

#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;
}

编译错误是因为您编写了pers_info->data;但是pers_info不是指针。->操作符只适用于指针。你指的是pers_info.data

然而,这整个设置是可怕的。使用std::string存储字符串。并使data不是指针。然后,所有的内存分配都得到了处理,您可以专注于使代码做您想要它做的事情。

最新更新