考研成长日记day2(2)
程序员文章站
2024-02-17 17:49:40
...
字符串按照下标访问明明有字符,但是输出为空
string s;
s[0]='h';
s[1]='i';
cout<<s;
按理来说应该是输出hi
但是由于字符串初始长度为0,所以说字符串会发生访问越界
所以说实际输出为
我们来看看下标能不能正常输出
string s;
s[0]='h';
s[1]='i';
cout<<s<<endl;
cout<<s[0]<<endl;
cout<<s[1]<<endl;
cout<<s.length()<<endl;
输出坐标正常,但是字符串长度还是为0
解决方法:
1.把字符串改成char型数组
char s[200];
s[0]='h';
s[1]='i';
cout<<s<<endl;
cout<<s[0]<<endl;
cout<<s[1]<<endl;
正常显示但是数组长度固定,所以说不太方便
2.利用+号运算符实现字符串长度扩充
string s;
cin>>s;
string s1;
cin>>s1;
s=s+s1;
cout<<s;
当然这种方法默认插到末尾,但是我们已经不会访问越界了
但是我们如果不想插到末尾怎么办呢
既然我们访问已经不会越界了,那么就可以使用下标了
string s;
cin>>s;
string s1;
cin>>s1;
int l=s.length();
int l1=s1.length();
s=s+s1;
int index;
cin>>index;
for(int i=l-1;i>=index;i--)
{
s[i+l1]=s[i];
}
for(int i=0;i<l1;i++)
{
s[index+i]=s1[i];
}
cout<<s;
这样就可以根据index位置进行插入了
上一篇: SpringMVC 中的异常处理
下一篇: 考研错题本——数据结构