std::operator+(std::basic_string)
| Definido en el archivo de encabezado <string>
|
||
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( const std::basic_string<CharT,Traits,Alloc>& lhs, const std::basic_string<CharT,Traits,Alloc>& rhs ); |
(1) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( const std::basic_string<CharT,Traits,Alloc>& lhs, const CharT* rhs ); |
(2) | (constexpr since C++20) |
template<class CharT, class Traits, class Alloc> std::basic_string<CharT,Traits,Alloc> operator+( const std::basic_string<CharT,Traits,Alloc>& lhs, CharT rhs ); |
(3) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( const CharT* lhs, const std::basic_string<CharT,Traits,Alloc>& rhs ); |
(4) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( CharT lhs, const std::basic_string<CharT,Traits,Alloc>& rhs ); |
(5) | (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( std::basic_string<CharT,Traits,Alloc>&& lhs, std::basic_string<CharT,Traits,Alloc>&& rhs ); |
(6) | (desde C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( std::basic_string<CharT,Traits,Alloc>&& lhs, const std::basic_string<CharT,Traits,Alloc>& rhs ); |
(7) | (desde C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( std::basic_string<CharT,Traits,Alloc>&& lhs, const CharT* rhs ); |
(8) | (desde C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( std::basic_string<CharT,Traits,Alloc>&& lhs, CharT rhs ); |
(9) | (desde C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( const std::basic_string<CharT,Traits,Alloc>& lhs, std::basic_string<CharT,Traits,Alloc>&& rhs ); |
(10) | (desde C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( const CharT* lhs, std::basic_string<CharT,Traits,Alloc>&& rhs ); |
(11) | (desde C++11) (constexpr since C++20) |
template< class CharT, class Traits, class Alloc > std::basic_string<CharT,Traits,Alloc> operator+( CharT lhs, std::basic_string<CharT,Traits,Alloc>&& rhs ); |
(12) | (desde C++11) (constexpr since C++20) |
Devuelve una cadena que contiene caracteres de lhs seguido de caracteres de rhs.
|
El asignador de memoria usado para el resutlado es: 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()En otras palabras, si un operando es un rvalue Para (6-12), todos los operandos rvalue |
(desde C++11) |
Parámetros
| lhs | - | Cadena, carácter o puntero al primer carácter en una array terminado en nulo. |
| rhs | - | Cadena, carácter o puntero al primer carácter en una array terminado en nulo. |
Valor de retorno
Una cadena que contiene los caracteres de lhs seguido de los caracteres de rhs, usando el asignador de memoria determinado anteriormente (desde C++11).
NotasDeberá usarse el operador Ya que el asignador usado por el resultado de using mi_cadena = std::basic_string<char, std::char_traits<char>, mi_asignador<char>>;
mi_cadena gato();
const mi_cadena& perro();
mi_cadena miau = /* ... */, guau = /* ... */;
miau + gato() + /*...*/; // usa SOCCC en el asignador de miau
guau + perro() + /*...*/; // en su lugar, usa el asignador del valor de retorno de perro()
miau + guau + miau; // usa SOCCC en el asignador de miau
miau + (guau + miau); // en su lugar usa SOCCC en el asignador de guau
Para una cadena de invocaciones de // usar mi_asignador_favorito para el resultado final
mi_cadena(mi_asignador_favorito) + miau + guau + gato() + perro();
Para un mejor y portable control sobre asignadores, las funciones miembro como |
(desde C++11) |
Ejemplo
#include <iostream>
#include <string>
int main()
{
std::string s1 = "Hola";
std::string s2 = "mundo";
std::cout << s1 + ' ' + s2 + "!\n";
}
Salida:
Hola mundo!
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| P1165R1 | C++11 | La propagación del asignador es aleatoria e inconsistente. | Se hizo más consistente. |
Véase también
| Añade caracteres al final (función miembro pública) | |
| Añade caracteres al final (función miembro pública) | |
| Inserta caracteres (función miembro pública) |