string的size/length、resize/reverse和capacity

函数原型

reserve

原型:

 #include <string>
 void reserve( size_type size = 0 );

函数reserve()将字符串的容量设置为至少size. 如果size指定的数值要小于当前字符串中的字符数(亦即size < this→size()), 容量将被设置为可以恰好容纳字符的数值. reserve()以线性时间(linear time)运行.

resize

原型:

 #include <string>
 void resize( size_type size, char val = char() );

函数resize()将字符串的尺寸设置为size. 如果val被指定, 则新创建的元素都将被初始化为val. 此函数以线性时间(linear time)运行.

capacity

原型:

 #include <string>
 size_type capacity() const;

函数capacity()返回string预先保留的最大元素数量.


   string类型中size()和length()分别返回string中含有的字符个数、string的字符串长度;对于某个string来说,两者的返回值是一样的。


对于如下的代码:

int main() {
	//section A
	string str;
	getline(cin, str);
	cout << "size: " << str.size() << endl;
	cout << "length: " << str.length() << endl;
	cout << "capacity: " << str.capacity() << endl;

	//section B
	/*str.resize(2);
	cout << endl;
	cout << str << endl;
	cout << "size: " << str.size() << endl;
	cout << "length: " << str.length() << endl;
	cout << "capacity: " << str.capacity() << endl;*/

	//section C
	str.reserve(2);
	cout << endl;
	cout << str << endl;
	cout << "size: " << str.size() << endl;
	cout << "length: " << str.length() << endl;
	cout << "capacity: " << str.capacity() << endl;
}

如果运行section A 和 section B部分代码,结果如图所示:


如果运行section A 和section C部分代码,结果如图所示:

可以看出,resize后将string类型的str的空间变为了resize的数值;而reserve后,如果size指定的数值要小于当前字符串中的字符数(亦即size < this→size()), 容量将被设置为可以恰好容纳字符的数值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值