<string_view>
Operadores
Use estos operadores para comparar dos objetos string_view
o un objeto string_view
y algún otro objeto de cadena (por ejemplo std::string
o char*
) para el que se proporciona una conversión implícita.
operator!=
operator>
operator>=
operator<
operator<<
operator<=
operator==
operator""sv
operator!=
Comprueba si el objeto en el lado izquierdo del operador no es igual al objeto del lado derecho.
template <class CharType, class Traits>
bool operator!=(
const basic_string_view<CharType, Traits>& left,
const basic_string_view<CharType, Traits>& right);
template <class CharType, class Traits>
bool operator!=(
const basic_string_view<CharType, Traits>& left,
convertible_string_type right);
template <class CharType, class Traits>
bool operator!=(
convertible_string_type left,
const basic_string_view<CharType, Traits>& right);
Parámetros
left
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
right
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
Valor devuelto
true
si el objeto del lado izquierdo del operador no es lexicográficamente igual que el objeto del lado derecho; en caso contrario, es false
.
Comentarios
Debe existir una conversión implícita de convertible_string_type a string_view
en el otro lado.
La comparación se basa en una comparación lexicográfica en pares de las secuencias de caracteres. Si tienen el mismo número de elementos y los elementos son iguales, los dos objetos son iguales. De lo contrario, no son iguales.
operator==
Comprueba si el objeto en el lado izquierdo del operador es igual al objeto del lado derecho.
template <class CharType, class Traits>
bool operator==(
const basic_string_view<CharType, Traits>& left,
const basic_string_view<CharType, Traits>& right);
template <class CharType, class Traits>
bool operator==(
const basic_string_view<CharType, Traits>& left,
convertible_string_type right);
template <class CharType, class Traits>
bool operator==(
convertible_string_type left,
const basic_string_view<CharType, Traits>& right);
Parámetros
left
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
right
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
Valor devuelto
true
si el objeto del lado izquierdo del operador es lexicográficamente igual que el objeto del lado derecho; en caso contrario, es false
.
Comentarios
Debe existir una conversión implícita de convertible_string_type a string_view
en el otro lado.
La comparación se basa en una comparación lexicográfica en pares de las secuencias de caracteres. Si tienen el mismo número de elementos y los elementos son iguales, los dos objetos son iguales.
operator<
Comprueba si el objeto en el lado izquierdo del operador es menor que el objeto del lado derecho.
template <class CharType, class Traits>
bool operator<(
const basic_string_view<CharType, Traits>& left,
const basic_string_view<CharType, Traits>& right);
template <class CharType, class Traits>
bool operator<(
const basic_string_view<CharType, Traits>& left,
convertible_string_type right);
template <class CharType, class Traits>
bool operator<(
convertible_string_type left,
const basic_string_view<CharType, Traits>& right);
Parámetros
left
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
right
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
Valor devuelto
true
si el objeto del lado izquierdo del operador es lexicográficamente menor que el objeto del lado derecho; en caso contrario, es false
.
Comentarios
Debe existir una conversión implícita de convertible_string_type a string_view en el otro lado.
La comparación se basa en una comparación lexicográfica en pares de las secuencias de caracteres. Cuando se detecta el primer par de caracteres desiguales, se devuelve el resultado de esa comparación. Si no se detectan caracteres desiguales, pero una secuencia es más corta, la secuencia más corta es menor que la más larga. En otras palabras, "gato" es menor que "gatos".
Ejemplo
#include <string>
#include <string_view>
using namespace std;
int main()
{
string_view sv1 { "ABA" };
string_view sv2{ "ABAC" };
string_view sv3{ "ABAD" };
string_view sv4{ "ABACE" };
bool result = sv2 > sv1; // true
result = sv3 > sv2; // true
result = sv3 != sv1; // true
result = sv4 < sv3; // true because `C` < `D`
}
operator<=
Comprueba si el objeto en el lado izquierdo del operador es menor o igual que el objeto del lado derecho.
template <class CharType, class Traits>
bool operator<=(
const basic_string_view<CharType, Traits>& left,
const basic_string_view<CharType, Traits>& right);
template <class CharType, class Traits>
bool operator<=(
const basic_string_view<CharType, Traits>& left,
convertible_string_type right);
template <class CharType, class Traits>
bool operator<=(
convertible_string_type left,
const basic_string_view<CharType, Traits>& right);
Parámetros
left
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
right
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
Valor devuelto
true
si el objeto del lado izquierdo del operador es lexicográficamente menor o igual que el objeto del lado derecho; en caso contrario, es false
.
Comentarios
Vea operator<
.
operator<<
Escribe un objeto string_view
en un flujo de salida.
template <class CharType, class Traits>
inline basic_ostream<CharType, Traits>& operator<<(
basic_ostream<CharType, Traits>& Ostr, const basic_string_view<CharType, Traits> Str);
Parámetros
Ostr
Un flujo de salida en el que se escribe.
Str
El objeto string_view que se va a escribir en un flujo de salida.
Valor devuelto
Un flujo de salida en el que se escribe.
Comentarios
Use este operador para insertar el contenido de un objeto string_view
en un flujo de salida, por ejemplo, mediante std::cout
.
operator>
Comprueba si el objeto en el lado izquierdo del operador es mayor que el objeto del lado derecho.
template <class CharType, class Traits>
bool operator>(
const basic_string_view<CharType, Traits>& left,
const basic_string_view<CharType, Traits>& right);
template <class CharType, class Traits>
bool operator>(
const basic_string_view<CharType, Traits>& left,
convertible_string_type right);
template <class CharType, class Traits>
bool operator>(
convertible_string_type left,
const basic_string_view<CharType, Traits>& right);
Parámetros
left
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
right
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
Valor devuelto
true
si el objeto del lado izquierdo del operador es lexicográficamente mayor que el objeto string_view
del lado derecho; en caso contrario, es false
.
Comentarios
Vea operator<
.
operator>=
Comprueba si el objeto en el lado izquierdo del operador es mayor o igual que el objeto del lado derecho.
template <class CharType, class Traits>
bool operator>=(
const basic_string_view<CharType, Traits>& left,
const basic_string_view<CharType, Traits>& right);
template <class CharType, class Traits>
bool operator>=(
const basic_string_view<CharType, Traits>& left,
convertible_string_type right);
template <class CharType, class Traits>
bool operator>=(
convertible_string_type left,
const basic_string_view<CharType, Traits>& right);
Parámetros
left
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
right
Cualquier tipo de cadena convertible o un objeto de tipo basic_string_view
que se va a comparar.
Valor devuelto
true
si el objeto del lado izquierdo del operador es lexicográficamente mayor que el objeto del lado derecho; en caso contrario, es false
.
Comentarios
Vea operator<
.
operator"" sv
(literal string_view
)
Construye un objeto string_view
a partir de un literal de cadena. Requiere el espacio de nombres std::literals::string_view_literals
.
Ejemplo
using namespace std;
using namespace literals::string_view_literals;
string_view sv{ "Hello"sv };
wstring_view wsv{ L"Hello"sv };
u16string_view sv16{ u"Hello"sv };
u32string_view sv32{ U"Hello"sv };
Requisitos
/std:c++17
o una versión posterior