STL——string类补充篇(拒绝reserve、resize傻傻分不清)

姓名:王海桐  学号:21021211072  学院:电子工程学院

友友你是否也经常将string类中的reserve和resize接口傻傻分不清楚,时不时用混导致出错呢?

那现在让我们一起解决它吧!

string::resever

只改变capacity的值,不改变size的大小

string::resize

在增容时会将增容部分全部填充为“/0”,capacity改变的同时size也会改变。

使用resever进行增容时:

resize和reverse接口都不使用,自动增容时:

使用resize进行增容时:

至于增容的规律,不同的编译库都是实现STL,但是要注意他们要按c++标准去实现string、vector等。具体底层如何实现,比如插入数据如何增容等等,是他们实现人决定的,不同的平台可能不同。

补充点小知识:

关于直接输出和用c_str接口输出的区别

既然接口不能全部输出,那是不是就没用呢?

当然不是啦,有些特殊情况下只能使用c_str接口输出,比如下面的情况:

活学活用:我们就用string::c_str()验证一下resize和reverse的关于“/0”填充的区别吧,源代码如下

使用reserve运行效果:

使用resize运行效果:

了解了STL中string类的这么多有趣玩法,各位友友是不是跃跃欲试了呢?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容