可以使用string::clear
函数清空字符串,并且可以使用空双引号""也这样做。有什么区别?
答案 0 :(得分:11)
当您指定一个空字符串时,编译器必须在数据部分中存储一个空的C字符串,并创建代码以将指针传递给赋值运算符。然后赋值运算符必须从数据部分读取,只是为了找出你传递的空字符串。
使用clear()
编译器只生成一个没有任何参数的函数调用。数据部分没有空字符串,没有指针传递,没有读数等等。
你甚至可能有一个编译器,可以优化它。我不知道是否有,但标准库不能依赖特定的编译器功能,这是不需要的。
更重要的区别在于表达意图。如果希望代码的读者理解,将清除该字符串,请使用clear()
。当意图是为字符串分配一个新值时,意外是一个空字符串,然后使用赋值运算符。