struct中的字符串

时间:2015-07-07 13:20:25

标签: c++ string struct

#include <bits/stdc++.h>

using namespace std;

struct node
{
    std::string a;
};

int main()
{
    cout << str << endl;
    struct node* p = (struct node*)(malloc(sizeof(struct node)));
    p->a = "a";
    cout << p->a;
    return 0;
}

上面的代码会产生运行时错误。结构正在用于int但是当我尝试使用string作为其成员变量时,会发生错误。它还在codechef ide上提供运行时错误。

3 个答案:

答案 0 :(得分:4)

不要使用mallocstd::string的构造函数将被调用,因此创建的对象将处于未定义状态。

请改用new。然后,C ++运行时将调用std::string成员的默认构造函数。不要忘记将newdelete匹配。

答案 1 :(得分:4)

C ++不是C。

您不应该#include文件夹bits中的任何内容。

您不应该使用malloc来分配内存。您应该使用new代替:

node* p = new node();

或者根本不动态分配内存:

node p;

C ++不是C。

答案 2 :(得分:2)

您忘记声明str。另外,除非你必须(读:永远),否则不要使用new(和当然不是malloc !!!):

#include <iostream>
#include <string>

using namespace std;
struct node {
    std::string a;
};
int main()

{
    std::string str;

    cout << str << endl;

    node p;
    p.a = "a";
    cout << p.a;
}