做题时想到的
我要连续输入两个字符串到同一个变量里,长度先长后短,比如abcde和xy
本蒟蒻忽然想到在输入xy时,xy会不会只是替换掉了原先ab的位置,但cde还在变量里,于是使用该代码进行实验
代码如下:
#include<bits/stdc++.h>
using namespace std;
string a;
int main()
{
while(cin>>a)cout<<a<<endl;
cout<<a<<" "<<a.length()<<endl;
return 0;
}
输出的结果是(\n左右空格仅为了好看,实际没有)
abcde \n xy \n xy 2
看似没问题,但是如果再加一行
for(int i=0;i<5;i++)cout<<a[i];
就会发现输出结果是xy de
- c没了,应该是被\0所覆盖掉了
- de还在,但它并没有在输出a字符串时出现(直接cout<<a<<endl;)也没有被a.length()所记录
求解求解求解