首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++字符串追加与运算符+=的区别

c++字符串追加与运算符+=的区别
EN

Stack Overflow用户
提问于 2017-07-12 20:48:11
回答 2查看 13.7K关注 0票数 20

这两条线有什么明显的区别吗?我的同事说,使用+=“更快”,但我不明白它们为什么会有所不同:

代码语言:javascript
复制
string s1 = "hello";
string s2 = " world";

// Option 1
s1 += s2;

// Option 2
s1.append(s2);

为了澄清这一点,我并不是在问这两个函数之间的使用差异--我知道append()可以用于更广泛的用途,而operator +=则更加专业化。我关心的是如何对待这个特殊的例子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-12 21:05:16

根据有关string::op+= /在线c++标准草案的标准,我不期望有任何不同:

basic_string& operator+=(const basic_string& str); (1)效果:追加调用(Str)。 (2)返回:*此。

票数 20
EN

Stack Overflow用户

发布于 2017-07-12 21:10:53

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

  • 字符串(1):string& operator+= (const string& str)
代码语言:javascript
复制
basic_string& operator+=(const basic_string& _Right) {
    return append(_Right);
}
  • c-string (2):string& operator+= (const char* s)
代码语言:javascript
复制
basic_string& operator+=(_In_z_ const _Elem* const _Ptr) {
    return append(_Ptr);
}
  • 字符(3):string& operator+= (char c)
代码语言:javascript
复制
basic_string& operator+=(_Elem _Ch) {
    push_back(_Ch);
    return *this;
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45067263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档