为什么有'明确' ""可以分配给std :: string吗?

时间:2016-02-14 06:07:08

标签: c++ string clear

可以使用string::clear函数清空字符串,并且可以使用空双引号""也这样做。有什么区别?

1 个答案:

答案 0 :(得分:11)

当您指定一个空字符串时,编译器必须在数据部分中存储一个空的C字符串,并创建代码以将指针传递给赋值运算符。然后赋值运算符必须从数据部分读取,只是为了找出你传递的空字符串。

使用clear()编译器只生成一个没有任何参数的函数调用。数据部分没有空字符串,没有指针传递,没有读数等等。

你甚至可能有一个编译器,可以优化它。我不知道是否有,但标准库不能依赖特定的编译器功能,这是不需要的。

更重要的区别在于表达意图。如果希望代码的读者理解,将清除该字符串,请使用clear()。当意图是为字符串分配一个新值时,意外是一个空字符串,然后使用赋值运算符。