字符串

时间:2015-05-22 21:09:37

标签: c++ struct

我正在为一个编程主题做一个项目。他们要求将项目保存在链表中。在这里你有我的结构:

typedef struct dados {

    int ID;

    string title;

    char institution[150];

    char investigator[150];

    string keywords[5];

    float money;

    struct dados *next; //pointer to next nodule

}No;

这是项目的第二阶段,第一阶段是使用一个简单的结构数组,但是这个阶段他们想要相同但有一个链表。

我有一个用于在结构中插入数据的函数。该函数请求输入,我将数据保存在结构中。

插入功能:

No * insertBegin(No * head){

    No * newNode;

    newNode= (No *)malloc(sizeof(No));

    cout << endl << "Qual e o titulo do projeto?" << endl << endl;

    getline(cin, newNode->titulo)

    //More data like this, on the end:

    newNode->next= head;
}

要在第一阶段保存标题字符串,我使用了这个:

getline(cin, no.title);

我想在第二阶段也这样做,我做了:

getline(cin, no->title);

但它给出了这个错误:

Unhandled exception at 0x00E14E96 in Aplicacao.exe: 0xC0000005: Access violation writing location 0xCDCDCDCD.

我不知道该怎么做。你能帮帮我吗?

万分感谢。

1 个答案:

答案 0 :(得分:1)

正如其他人所指出的那样,你不能使用malloc来创建&#34; No&#34; struct因为malloc不会调用字符串的构造函数。因此功能变为:

No * insertBegin(No * head){
    No * newNode;

    //newNode= (No *)malloc(sizeof(No));
    newNode = new No();

    cout << endl << "Qual e o titulo do projeto?" << endl << endl;

    getline(cin, newNode->titulo)

    //More data like this, on the end:

    newNode->next= head;
}

请注意,您不应该对该对象释放()。相反,请使用delete关键字。