关于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%
帮助的人:2428万
展开全部
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%
帮助的人:71.1万
展开全部
应该是这样:

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式