欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

考研成长日记day2(2)

程序员文章站 2024-02-17 17:49:40
...

字符串按照下标访问明明有字符,但是输出为空

string s;
s[0]='h';
s[1]='i';
cout<<s;

按理来说应该是输出hi
但是由于字符串初始长度为0,所以说字符串会发生访问越界
所以说实际输出为考研成长日记day2(2)
我们来看看下标能不能正常输出

string s;
s[0]='h';
s[1]='i';
cout<<s<<endl;
cout<<s[0]<<endl;
cout<<s[1]<<endl;
cout<<s.length()<<endl;

输出坐标正常,但是字符串长度还是为0
考研成长日记day2(2)
解决方法:
1.把字符串改成char型数组

char s[200];
s[0]='h';
s[1]='i';
cout<<s<<endl;
cout<<s[0]<<endl;
cout<<s[1]<<endl;

考研成长日记day2(2)
正常显示但是数组长度固定,所以说不太方便

2.利用+号运算符实现字符串长度扩充

string s;
cin>>s;
string s1;
cin>>s1;
s=s+s1;
cout<<s;

当然这种方法默认插到末尾,但是我们已经不会访问越界了
考研成长日记day2(2)
但是我们如果不想插到末尾怎么办呢
既然我们访问已经不会越界了,那么就可以使用下标了

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;

考研成长日记day2(2)
这样就可以根据index位置进行插入了

相关标签: 考研