C/C++中string赋值到字符数组中的问题?

dn587494 发布于 2016/03/05 15:47
阅读 1K+
收藏 0
src::src()
{
	int i=0;
	string temp_srcstr;
	cout<<"请输入一串字符:";
	getline(cin,temp_srcstr);
	length=temp_srcstr.length();
	p_src=new char[length+1];
	//strcpy(p_src,temp_srcstr.c_str());   //这句是对的
	for(i=0;i<length;i++);
	{
		p_src[i]=temp_srcstr.at(i);   //这句是错误的
	}
}

如图  我在定义对象后的构造函数中完成string到字符数组的操作,前者语句可以而后者不行,请问为什么?



加载中
0
木兰宿莽
木兰宿莽
for()后面加个分号是故意的吗?
dn587494
dn587494
我去掉也不行啊
dn587494
dn587494
那个是复制的时候出错的
0
oreax
oreax
temp_srcstr[i]不久得了
dn587494
dn587494
也不行~~
0
xpbob
xpbob
for(i=0;i<length;i++);由于你有分号,其实这里只是增加了i的值,i最后的值就是length,temp_srcstr.at(i)肯定有问题,i最大就是length-1
xpbob
xpbob
回复 @magiclogy : 我只是让他取出最后一个值后自己再数组里加\0,我并没有说string实现的问题,我并不知道string里面的代码是怎么写的
m
magiclogy
回复 @xpbob : 并不是自己加的,at是有边界检查的,但是对.c_str()就没有。
dn587494
dn587494
好的,谢谢
xpbob
xpbob
@dn587494 就是说string的at是不允许你访问\0位置的,你需要\0自己在数组最后加一个就行,strcpy里面是自己加的,不是从string里拿的
木兰宿莽
木兰宿莽
回复 @dn587494 : 就是因为你的那个分号啊,大哥
下一页
0
仪山湖
仪山湖
c++11的文档里写这个at函数返回的还是string呀
返回顶部
顶部