调一道题,卡了一上午,最后发现是字符串用size()函数计算长度时总是与实际长度不符。
我又写了个测试size()的程序,从结果中可以看出,用size()函数求res长度的时候返回值是0,而实际res长度应该是5,用另一种方法(把res转换成c字符串)求长度时是对的。
为什么size()返回结果不对?要满足什么条件才能用size()?百思不得其解,望大佬们指点迷津。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int l=5;
string res;
//给res赋值, res变成 "11111"
for (int i=0;i<l;i++)
res[i]='1';
//用size()求 res 的长度
cout<<"size of res: "<<res.size()<<endl;
//用一般方法输出 res
cout<<"output1: ";
for (int i=0;i<res.size();i++)
cout<<res[i];
cout<<endl;
//输出正确的 res
cout<<"output2: ";
for (int i=0;i<l;i++)
cout<<res[i];
cout<<endl;
//换一种方法求 res 长度
cout<<"size of res: "<<strlen(res.c_str())<<endl;
return 0;
}
