operator==,!=,<,<=,>,>=,<=> (std::basic_string)
|
Definido en el encabezado
<string>
|
||
|
Comparar dos objetos
basic_string
|
||
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
==
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(1) |
(noexcept desde C++11)
(constexpr desde C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
!
=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(2) |
(hasta C++20)
(noexcept desde C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(3) |
(hasta C++20)
(noexcept desde C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(4) |
(hasta C++20)
(noexcept desde C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(5) |
(hasta C++20)
(noexcept desde C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(6) |
(hasta C++20)
(noexcept desde C++11) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
constexpr
/*comp-cat*/
|
(7) | (desde C++20) |
|
Comparar un objeto
basic_string
y un array terminado en nulo de
T
|
||
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
==
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(8) | (constexpr desde C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
==
(
const
CharT
*
lhs,
|
(9) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
!
=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(10) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
!
=
(
const
CharT
*
lhs,
|
(11) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(12) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<
(
const
CharT
*
lhs,
|
(13) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(14) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
<=
(
const
CharT
*
lhs,
|
(15) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(16) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>
(
const
CharT
*
lhs,
|
(17) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>=
(
const
std::
basic_string
<
CharT,Traits,Alloc
>
&
lhs,
|
(18) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
bool
operator
>=
(
const
CharT
*
lhs,
|
(19) | (hasta C++20) |
|
template
<
class
CharT,
class
Traits,
class
Alloc
>
constexpr
/*comp-cat*/
|
(20) | (desde C++20) |
Compara el contenido de una cadena con otra cadena o un arreglo terminado en nulo de
CharT
.
Todas las comparaciones se realizan mediante la
compare()
función miembro (que a su vez está definida en términos de
Traits::compare()
):
- Dos cadenas son iguales si tanto el tamaño de lhs como el de rhs son iguales y cada carácter en lhs tiene un carácter equivalente en rhs en la misma posición.
- Las comparaciones de ordenación se realizan lexicográficamente – la comparación se lleva a cabo mediante una función equivalente a std::lexicographical_compare o std::lexicographical_compare_three_way (desde C++20) .
basic_string
.
basic_string
y un array terminado en nulo de
CharT
.
|
El tipo de retorno de los operadores de comparación de tres vías ( /*comp-cat*/ ) es Traits :: comparison_category si ese identificador calificado existe y denota un tipo, std::weak_ordering en caso contrario. Si /*comp-cat*/ no es un tipo de categoría de comparación, el programa está mal formado.
Los operadores
|
(desde C++20) |
Contenidos |
Parámetros
| lhs, rhs | - | cadenas cuyos contenidos comparar |
Valor de retorno
Complejidad
Lineal en el tamaño de las cadenas.
Notas
|
Si al menos un parámetro es de tipo
std::string
,
std::wstring
,
std::u8string
,
std::u16string
, o
std::u32string
, el tipo de retorno de
|
(desde C++20) |
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2064 | C++11 |
la consistencia de si las sobrecargas que toman dos
basic_string
son noexcept era inconsistente;
las sobrecargas que toman un
CharT*
eran noexcept pero podían generar UB
|
hecho consistente;
noexcept eliminado |
| LWG 3432 | C++20 |
el tipo de retorno de
operator<=>
no estaba requerido ser un tipo de categoría de comparación
|
requerido |