std::operator+(std::basic_string)
Определено в заголовочном файле <string>
|
||
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(1) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(2) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(3) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(4) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(5) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(6) | (начиная с C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(7) | (начиная с C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(8) | (начиная с C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(9) | (начиная с C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(10) | (начиная с C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(11) | (начиная с C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> |
(12) | (начиная с C++11) (constexpr since C++20) |
Возвращает строку, содержащую символы из lhs, за которыми следуют символы из rhs.
Аллокатор, используемый для результата: 1-3) std::allocator_traits<Alloc>::select_on_container_copy_construction(lhs.get_allocator())
4,5) std::allocator_traits<Alloc>::select_on_container_copy_construction(rhs.get_allocator())
6-9) lhs.get_allocator()
10-12) rhs.get_allocator()
Другими словами, если один операнд является Для (6-12) все операнды rvalue |
(начиная с C++11) |
Содержание |
[править] Параметры
lhs | — | строка, символ или указатель на первый символ в массиве с нулевым завершением |
rhs | — | строка, символ или указатель на первый символ в массиве с нулевым завершением |
[править] Возвращаемое значение
Строка, содержащая символы из lhs, за которыми следуют символы из rhs, с использованием аллокатора, определённого, как указано выше (начиная с C++11).
Примечание
Поскольку аллокатор, используемый результатом using my_string = std::basic_string<char, std::char_traits<char>, my_allocator<char>>; my_string cat(); const my_string& dog(); my_string meow = /* ... */, woof = /* ... */; meow + cat() + /* ... */; // использует select_on_container_copy_construction в аллокаторе meow woof + dog() + /* ... */; // вместо этого использует аллокатор возвращаемого значения dog() meow + woof + meow; // использует select_on_container_copy_construction в аллокаторе meow meow + (woof + meow); // вместо этого использует SOCCC в аллокаторе woof Для цепочки вызовов // используется my_favorite_allocator для получения окончательного результата my_string(my_favorite_allocator) + meow + woof + cat() + dog(); Для лучшего и переносимого управления аллокаторами такие функции-элементы, как |
(начиная с C++11) |
[править] Пример
#include <iostream> #include <string> int main() { std::string s1 = "Привет"; std::string s2 = "мир"; std::cout << s1 + ' ' + s2 + "!\n"; }
Вывод:
Привет мир!
[править] Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
WG не указан | C++11 | распространение аллокатора является случайным и непоследовательным | стало более последовательным |
[править] Смотрите также
добавляет символы в конец (public функция-элемент) | |
добавляет символы в конец (public функция-элемент) | |
вставляет символы (public функция-элемент) |