用size()求字符串长度,为什么与实际长度不符?
  • 板块灌水区
  • 楼主柚子皮
  • 当前回复21
  • 已保存回复21
  • 发布时间2022/7/3 14:02
  • 上次更新2023/10/27 22:00:37
查看原帖
用size()求字符串长度,为什么与实际长度不符?
112889
柚子皮楼主2022/7/3 14:02

调一道题,卡了一上午,最后发现是字符串用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;
}

运行结果

2022/7/3 14:02
加载中...