1

我有 2 个结构和一个变量类型 Book

Book book_struct[100];

typedef struct Book{
  int id;
  char title[256];
  char summary[2048];
  int numberOfAuthors;
  Author * authors;
};

typedef struct Author{
  char firstName[56];
  char lastName[56];
};

当我想更改每本书的标题时

        //title
        char *title_char=new char[parsedString[1].size()+1];
        title_char[parsedString[1].size()]=0;
        memcpy(title_char,parsedString[1].c_str(),parsedString[1].size());

        strcpy(books_struct[z].title, title_char);

其中parsedString是一个数组,其中包含 id、标题、摘要、作者数量以及名字和姓氏

上面的代码适用于标题

但是当我尝试使用以下代码更改作者的名字和姓氏时

        //author firstname
        char *author_fn_char=new char[parsedString[4].size()+1];
        author_fn_char[parsedString[4].size()]=0;
        memcpy(author_fn_char,parsedString[4].c_str(),parsedString[4].size());

        strcpy(books_struct[z].authors->firstName, author_fn_char);

程序编译,当我运行它时,它显示“程序没有响应”作为 Windows 错误并关闭...

4

2 回答 2

3

只需使用std::strings(而std::vector<Author>不是Authors*):

#include <string>
#include <vector>

struct Book{
  int id;
  std::string title;
  std::string summary;
  std::vector<Author> authors; // authors.size() will give you number of authors
};

struct Author{
  std::string firstName;
  std::string lastName;
};

Book b;
b.title = "The C++ programming Language";
于 2013-05-20T17:38:03.053 回答
1

您的作者变量很可能未分配。指针只能指向其他对象,并且需要正确分配才能分配变量(例如author = new Author)。

Author *au;
au->firstname = "hello" //au is a pointer and cannot hold values, error
au = new Author;
au->firstname = "hello" //valid
于 2013-05-20T17:38:25.757 回答