关于C++的基础问题:在结构体中能够定义string变量????

如:structtest{stringstr;};之后在main函数中为什么不能赋值;intmain(){testtest1={"strtest"};return0;}这... 如:struct test
{
string str;
};
之后在main函数中为什么不能赋值;
int main()
{
test test1={"strtest"};
return 0;
}
这样之后就会报错;
求解:为什么??还是因为在结构体中不能定义string变量????
using std::string;已经声明
谢谢各位的回答!主要问题是
如果将name变量声明为字符数组,则可以使用初始化列表进行初始化,如
struct test
{
char name[20];
};
则在main函数中可以这样初始化:
int main()
{
test test1{"strTest"};
return 0;
}
这样程序会正常运行,但,string name; 不行,为什么???
展开
 我来答
果建翼
2012-10-14 · TA获得超过7923个赞
知道大有可为答主
回答量:1684
采纳率:0%
帮助的人:2420万
展开全部
string是标准库中的复杂对象,并不是C++内建数据类型。所者宽以不支持那种大核嫌慎括号内跟一个字符改敬串的初始化赋值方式。

解决办法是使用结构体的构造函数
struct test
{
test(const char* s): str(s){}
string str;
};

int main()
{
test test1("strtest");
return 0;
}
chj2001fz
2012-10-14 · 超过28用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:70.8万
展开全部
应该是这样:

test test1;
test1.str={"strtest"};
因为结构体里不一定有多少变量,所以不能给结构体赋值山谨核,只能给结构体里的变量赋逗掘值晌镇,就算只有一个变量也是如此
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ypxwmx
2012-10-14 · TA获得超过1131个赞
知道小有建树答主
回答量:726
采纳率:0%
帮助的人:678万
展开全部
结构带纳贺体 可以理解为 类
里面的string str 相当于一个成员变量
想想你的类蠢派里的public的成员变量怎么赋值的?
所以应该是
test test1;
test1.strtest="...."茄蔽;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuyusile09
2018-05-09
知道答主
回答量:3
采纳率:0%
帮助的人:2732
展开全部
不能用malloc去给你的结构体申请空间,假如使用指针的话,梁闷因为malloc对源隐string类没有对其初始化的能力,所以申请string类对象失败,你赋值的时候肯定也是失败的。但是用new来申请结构体空间的话雹渣厅,就可以赋值成功的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兔子和小强
2012-10-14 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1417万
展开全部
没有错的,你可能其他地方错了
追问
如果改成字符数组就编译通过了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式