首页 > 解决方案 > 声明后的c ++字符串clear()

问题描述

我是初学者学习弦乐。

#include<iostream>
#include<string>
using namespace std;
int main(){
string st1, st2;
st1.clear();
..

我在几个例子中看到了在字符串声明之后使用 clear() 。有必要吗?这是否提供任何好处或只是一个好习惯,声明后默认情况下字符串不是 null 吗?谢谢你。

标签: c++string

解决方案


默认构造的字符串大小为零且未指定容量,因此从语义上讲,调用 没有意义clear()。字符串是空的,不能再空了。

但是,不能保证不会clear()改变字符串的容量,因此某些实现可能会在调用clear()空字符串时释放一些内存。cppreference 声称“现有的实现不会改变容量”,所以即使是这个调用的理由clear()也可能是无效的。

简而言之,不要效仿这些不好的例子。


推荐阅读