如果用string的话,要在开头加上
#include
然后
struct worker
{
int id;
string name;
string sex;
};
后边就可以像你那么直接赋值就行了。
如果要用字符串形式,
那么赋值时候应该用
strcpy()函数来赋值。
c++结构体变量的初始化
和其他类型变量一样,对结构体变量可以在定义时指定初始值。如:
struct Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1={10001, "Zhang Xin", 'M', 19, 90.5, "Shanghai"};
char类型的赋值一般跟字符串一样,因为是多个字符,所以用双引号括起来就可以了。如
"Shanghai"。
首先,你的结构体这样初始化:
struct worker
{
int id;
char *name;
char *sex;
};
然后再赋值·
worker w;
w.id=2;
w.name ="奥特曼";
w.sex ="女";
这样就不会有错了,你报错的原因是因为汉字所占空间(byte)大小与一个字符是不同的(如a)
所以你预先定义的数组大小会与你所赋的值不匹配。还有如果用string的话直接string name,string
sex,然后直接赋值就行了。
有两种赋值方式,需要选择其中一种。
1、一种是浅复制(浅拷贝),这样你的req.i->j与x数组指向同一个东西,修改x数组会对结构体内容产生影响。
req.i = malloc(sizeof(struct b));
req.i->j = x;
2、另一种是深复制(深拷贝),把内容搬动进去。
req.i = malloc(sizeof(struct b));
req.i->j = malloc(sizeof(char)*20);
strcpy(req.i->j, x);
如果使用string字符串
定义头文件#include
添加using std::string;
修改:
string name[10];
string sex[2];