C++ 字符串追加和运算符 += 之间的区别

Difference between c++ string append and operator +=

本文关键字:之间 区别 运算符 字符串 追加 C++      更新时间:2023-10-16

两行之间有什么明显的区别吗?我的同事说使用 += "更快",但我不明白为什么它们应该有任何不同:

string s1 = "hello";
string s2 = " world";
// Option 1
s1 += s2;
// Option 2
s1.append(s2);

澄清一下,我不是在问这两个函数之间的用法差异- 我知道append()可以用于更广泛的用途,并且operator +=更专业。我关心的是如何处理这个特定的例子。

根据有关字符串::op+=/在线 c++ 标准草案的标准,我不希望有任何区别:

basic_string& operator+=(const basic_string& str(;

(1(效果:调用追加(str(。

(2(返回:*这个。

在Microsoft STL 实现中,运算符+=是一个内联函数,它调用append()。以下是实现,

  • 字符串 (1(:string& operator+= (const string& str)
basic_string& operator+=(const basic_string& _Right) {
return append(_Right);
}
  • C弦(2(:string& operator+= (const char* s)
basic_string& operator+=(_In_z_ const _Elem* const _Ptr) {
return append(_Ptr);
}
  • 字符(3(:string& operator+= (char c)
basic_string& operator+=(_Elem _Ch) {
push_back(_Ch);
return *this;
}
  • 来源:GitHub:Microsoft/STL