实现s2字符串连接到s1字符串后面

Gzd2003 2008-11-27 10:05:04
编写以下程序实现s2字符串连接到s1字符串后面,编译没有错误,但是得不到正确结果,为什么?谢谢。
#include <iostream>
#include <string>
using namespace std;
void main()
{
string s1="abc",s2="def";
s1[3]=s2[0];
s1[4]=s2[1];
s1[5]=s2[2];
s1[6]='\0';
cout<<s1<<endl;
}
...全文
1078 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tcs_win 2008-11-27
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;
void main()
{
string s1="abc",s2="def";
cout<<s1.size()<<endl; //输出s1的字符串长度 3
cout<<s2.size()<<endl; //输出s2的字符串长度 3
s1=s1+s2; //输出s1的字符串长度 6
cout<<s1.size()<<endl;
cout < <s1 < <endl;
}
Tcs_win 2008-11-27
  • 打赏
  • 举报
回复
#include <iostream> 
#include <string>
using namespace std;
void main()
{
string s1="abc",s2="def";
cout<<s1.size()<<endl; //输出s1的字符串长度 3
cout<<s2.size()<<endl; //输出s2的字符串长度 3
s1=s1+s2; //输出s1的字符串长度 6
cout<<s1.size()<<endl;
cout < <s1 < <endl;
}

C++风格的字符串对象与C的不一样
C中的字符串以'\0'结束
C++中的字符串对象s1="abc"没有'\0'
toadzw 2008-11-27
  • 打赏
  • 举报
回复
s1 += s2;
string 不同于数组与char*,一般不使用一标访问;
cyj626 2008-11-27
  • 打赏
  • 举报
回复
越界, 后面的字符随机
qingkongyihe2008 2008-11-27
  • 打赏
  • 举报
回复
需要新建立一个字符串空间,然后拷贝,连接
Tcs_win 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 stanboy 的回复:]
s1 += s2;
[/Quote]
2楼正解
JJZHK 2008-11-27
  • 打赏
  • 举报
回复
需要新开一个空间,然后strcpy,然后strcat.
Tcs_win 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 Gzd2003 的帖子:]
编写以下程序实现s2字符串连接到s1字符串后面,编译没有错误,但是得不到正确结果,为什么?谢谢。
#include <iostream>
#include <string>
using namespace std;
void main()
{
string s1="abc",s2="def";
s1[3]=s2[0];
s1[4]=s2[1];
s1[5]=s2[2];
s1[6]='\0';
cout < <s1 < <endl;
}
[/Quote]
s1只有3个大小的空间:s[0],s[1],s[2]
s1[3]已经越界了啊,所以有错

  • 打赏
  • 举报
回复
字符串存储在string.c_str()与string的地址不相同,这么拼接不安全也得不到预期的结果。
stanboy 2008-11-27
  • 打赏
  • 举报
回复
s1 += s2;

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧