Compartir vía


<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

Consulte también

<string_view>