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異常。

另見