string 结构体赋值

结构体中string赋值

在进行一下操作时,下面一行调试出现错误,程序终止。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
typedef struct NODE
{
string line;
struct NODE *next;
} node;
node *head;
node *p,*q,*HEAD;
main()
{
char op;
int n=0,num;
p=(node*)malloc(sizeof(node));
p->next=NULL;
HEAD=p;
head=p;
while(1)
{
getline(cin,a);
p = (node*)malloc(sizeof(node));//*****
p->line=a; //出现错误!!! *****************
head->next=p;
p->next=NULL;
head=p;
n++;
}
}

由于:结构体内的string不定长,不能动态分配内存,需要用用new来分配内存

malloc只是分配内存。
new除了分配内存还会调用构造函数的。

应将

1
p = (node*)malloc(sizeof(node));

改为

1
p = new NODE;