给定一个字符串变量设置为某个值:
string s = "Hello";
以下方法之间是否有任何区别(性能,陷阱)以清除内容?:
s = ""
s = std::string()
s.clear()
我从这个答案中得到了关于清除变量https://stackoverflow.com/a/11617595/1228532
的问题的示例代码答案 0 :(得分:9)
存在一些明显的差异。
clear
将字符串的长度设置为0,但不会更改其容量。
s=""
或s = std::string()
创建一个全新的(空)字符串,将其值分配给现有字符串,并丢弃现有字符串的内容。特别是如果您使用的std::string
实现并未包含短字符串优化,则可能比clear
慢得多。为了增加对伤害的侮辱,这也意味着如果你向字符串中添加更多数据,它最终将从一个微小的缓冲区开始重新分配缓冲区,它可能需要在字符串增长时重新分配。
底线:clear
通常会更快,更不用说明确表达你的真实意图了。