Cly*_*ost 7 c++ string string-concatenation
两条线之间有明显的区别吗?我的同事说使用+ =是"更快"但我不明白他们为什么应该有所不同:
string s1 = "hello";
string s2 = " world";
// Option 1
s1 += s2;
// Option 2
s1.append(s2);
Run Code Online (Sandbox Code Playgroud)
为了澄清,我不是在问两个函数之间的用法差异 - 我知道它append()可以用于更广泛的用途,而且operator +=更专业.我关心的是如何处理这个特定的例子.
Ste*_*ner 10
根据有关string :: op + =/online c ++标准草案的标准,我不希望有任何区别:
basic_string&operator + =(const basic_string&str);
(1)效果:呼叫附加(str).
(2)返回:*this.
在 Microsoft STL 实现中,运算符+=是一个内联函数,它调用append(). 这里是实现,
string& operator+= (const string& str)basic_string& operator+=(const basic_string& _Right) {
return append(_Right);
}
Run Code Online (Sandbox Code Playgroud)
string& operator+= (const char* s)basic_string& operator+=(_In_z_ const _Elem* const _Ptr) {
return append(_Ptr);
}
Run Code Online (Sandbox Code Playgroud)
string& operator+= (char c)basic_string& operator+=(_Elem _Ch) {
push_back(_Ch);
return *this;
}
Run Code Online (Sandbox Code Playgroud)