首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >声明后的清除字符串c++ ()

声明后的清除字符串c++ ()
EN

Stack Overflow用户
提问于 2021-02-21 20:10:46
回答 2查看 62关注 0票数 0

我是一个学习字符串的初学者。

代码语言:javascript
运行
复制
#include<iostream>
#include<string>
using namespace std;
int main(){
string st1, st2;
st1.clear();
..

我在几个示例中看到了在字符串声明后使用clear()。有必要吗?这是否提供了任何好处,或者仅仅是一个好的实践,在声明之后字符串不是缺省为null吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-21 20:16:14

默认构造的字符串具有zero size and unspecified capacity,因此从语义上讲,调用clear()没有意义。字符串为空,不能再为空。

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

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

票数 3
EN

Stack Overflow用户

发布于 2021-02-21 20:12:44

这是不必要的。std::string默认构造函数将对象初始化为空字符串。clear清空现有字符串。这在默认构造的空字符串上是无意义的。这只是浪费时间(如果编译器没有优化调用)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66302151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档