C++中结构体的char类型怎么赋值?

代码如下:structworker{intid;charname[10];charsex[2];};workerw;w.id=2;w.name=“奥特曼”;w.sex="... 代码如下:

struct worker
{
int id;
char name[10];
char sex[2];
};
worker w;
w.id=2;
w.name =“奥特曼”;
w.sex = "女";
编译器提示错误:“
IntelliSense: 表达式必须是可修改的左值”,
该怎么解决?
好像说用string就可以直接的赋值,不知道又该怎么使用string?用的是VS2010
展开
 我来答
糖二灰
推荐于2018-03-07 · TA获得超过3940个赞
知道小有建树答主
回答量:1052
采纳率:75%
帮助的人:1057万
展开全部
如果用string的话,要在开头加上
#include <string>
然后
struct worker
{
int id;
string name;
string sex;
};
后边就可以像你那么直接赋值就行了。

如果要用字符串形式,
那么赋值时候应该用
strcpy()函数来赋值。
更多追问追答
追问
strcpy()该怎么写?按着网上的写了下,好像不对
是不是这样:strcpy(w[0].name,"奥特曼");
追答
你加个中括号是干嘛,你的w又不是数组。
strcpy(w.name,"奥特曼");
千锋教育
2015-12-05 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

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"。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bbb987c
2013-08-03
知道答主
回答量:17
采纳率:0%
帮助的人:14万
展开全部
首先,你的结构体这样初始化:
struct worker
{
int id;
char *name;
char *sex;
};
然后再赋值·
worker w;
w.id=2;
w.name ="奥特曼";
w.sex ="女";
这样就不会有错了,你报错的原因是因为汉字所占空间(byte)大小与一个字符是不同的(如a)
所以你预先定义的数组大小会与你所赋的值不匹配。还有如果用string的话直接string name,string
sex,然后直接赋值就行了。
追问
这个不是用指针吗,按照你的写法,如果将直接赋值换成
cout >w.id;
这种填写进去的赋值方式,调试时就会出现“程序已停止工作”的框
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-10-31 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:888万
展开全部

有两种赋值方式,需要选择其中一种。
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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kurtash
2013-08-03 · TA获得超过224个赞
知道答主
回答量:29
采纳率:0%
帮助的人:20.6万
展开全部
如果使用string字符串
定义头文件#include <string>
添加using std::string;
修改:
string name[10];
string sex[2];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式