function template
<string>

std::operator+ (basic_string)

string (1)
template <class charT, class traits, class Alloc>  basic_string operator+ (const basic_string<charT,traits,Alloc>& lhs,                          const basic_string<charT,traits,Alloc>& rhs);
c-string (2)
template <class charT, class traits, class Alloc>  basic_string operator+ (const basic_string<charT,traits,Alloc>& lhs, const charT* rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (const charT* lhs, const basic_string<charT,traits,Alloc>& rhs);
character (3)
template <class charT, class traits, class Alloc>  basic_string operator+ (const basic_string<charT,traits,Alloc>& lhs, charT rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (charT lhs, const basic_string<charT,traits,Alloc>& rhs);
string (1)
template <class charT, class traits, class Alloc>  basic_string operator+ (const basic_string<charT,traits,Alloc>& lhs,                          const basic_string<charT,traits,Alloc>& rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (basic_string<charT,traits,Alloc>&& lhs,                          basic_string<charT,traits,Alloc>&& rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (basic_string<charT,traits,Alloc>&& lhs,                          const basic_string<charT,traits,Alloc>& rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (const basic_string<charT,traits,Alloc>& lhs,                          basic_string<charT,traits,Alloc>&& rhs);
c-string (2)
template <class charT, class traits, class Alloc>  basic_string operator+ (const basic_string<charT,traits,Alloc>& lhs, const charT* rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (basic_string<charT,traits,Alloc>&& lhs, const charT* rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (const charT* lhs, const basic_string<charT,traits,Alloc>&  rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (const charT* lhs, basic_string<charT,traits,Alloc>&& rhs);
character (3)
template <class charT, class traits, class Alloc>  basic_string operator+ (const basic_string<charT,traits,Alloc>& lhs, charT rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (basic_string<charT,traits,Alloc>&& lhs, charT rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (charT lhs, const basic_string<charT,traits,Alloc>& rhs);template <class charT, class traits, class Alloc>  basic_string operator+ (charT lhs, basic_string<charT,traits,Alloc>&& rhs);
连接字符串
返回一个新构建的 basic_string 对象,其值是 lhs 中的字符与 rhs 中的字符的连接。

在至少接受一个 右值引用 作为参数的签名中,返回的对象通过传递此参数进行移动构造,该参数保持未指定但有效的状态。如果两个参数都是右值引用,则仅移动其中一个(未指定哪个),而另一个保留其值。

参数

lhs, rhs
运算符左侧和右侧的参数,分别。
如果类型为charT*,则应指向一个以 null 结尾的字符序列。
charTbasic_string 的字符类型(即,它的第一个模板参数)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// concatenating strings
#include <iostream>
#include <string>

main ()
{
  std::string firstlevel ("com");
  std::string secondlevel ("cplusplus");
  std::string scheme ("http://");
  std::string hostname;
  std::string url;

  hostname = "www." + secondlevel + '.' + firstlevel;
  url = scheme + hostname;

  std::cout << url << '\n';

  return 0;
}

输出
http://www.cplusplus.com


返回值

一个 basic_string 对象,其值是 lhsrhs 的连接。

复杂度

未指定,但通常与结果 字符串长度呈线性关系(并且对于具有右值引用的签名,与未移动参数的长度呈线性关系)。

迭代器有效性

具有右值引用的签名可能会使与移动的 basic_string 对象相关的迭代器、指针和引用无效。

数据竞争

具有右值引用的签名会修改移动的 basic_string 对象。

异常安全

强保证:如果抛出异常,则 basic_string 对象均不会发生任何更改。

如果已知s不是以空字符结尾的字符序列,它会导致未定义的行为

如果结果 字符串长度 超过 max_size,则会抛出 length_error 异常。
如果该类型使用默认分配器,如果函数需要分配存储空间但失败,则会抛出bad_alloc异常。

另见