Compartilhar via


Operadores <string_view>

Use esses operadores para comparar dois objetos string_view ou um string_view e algum outro objeto de cadeia de caracteres (por exemplo std::string, ou char*) para o qual uma conversão implícita é fornecida.

operator!=
operator>
operator>=
operator<
operator<<
operator<=
operator==
operator""sv

operator!=

Testa se o objeto à esquerda do operador é diferente do objeto à direita.

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

esquerda
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

direita
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

Valor de retorno

true se o objeto à esquerda do operador não for lexicograficamente igual ao objeto no lado direito; caso contrário, false.

Comentários

Uma conversão implícita deve existir de convertible_string_type para o string_view no outro lado.

A comparação é baseada em uma comparação de pares lexicográficos das sequências de caracteres. Se eles tiverem o mesmo número de elementos e os elementos forem todos iguais, os dois objetos serão iguais. Caso contrário, eles não são iguais.

operator==

Testa se o objeto à esquerda do operador é igual ao objeto à direita.

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

esquerda
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

direita
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

Valor de retorno

true se o objeto à esquerda do operador for lexicograficamente igual ao objeto no lado direito; caso contrário, false.

Comentários

Uma conversão implícita deve existir de convertible_string_type para o string_view no outro lado.

A comparação é baseada em uma comparação de pares lexicográficos das sequências de caracteres. Se eles tiverem o mesmo número de elementos e os elementos forem todos iguais, os dois objetos serão iguais.

operator<

Testa se o objeto à esquerda do operador é menor do que o objeto à direita.

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

esquerda
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

direita
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

Valor de retorno

true se o objeto à esquerda do operador for lexicograficamente menor que o objeto à direita; caso contrário, false.

Comentários

Uma conversão implícita deve existir de convertible_string_type para o string_view do outro lado.

A comparação é baseada em uma comparação de pares lexicográficos das sequências de caracteres. Quando o primeiro par desigual de caracteres é encontrado, o resultado dessa comparação é retornado. Se nenhum caractere desigual for encontrado, mas uma sequência for menor, a sequência mais curta será menor que a mais longa. Em outras palavras, "gato" é menor que "gatos".

Exemplo

#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<=

Testa se o objeto à esquerda do operador é menor que ou igual ao objeto à direita.

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

esquerda
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

direita
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

Valor de retorno

true se o objeto à esquerda do operador for lexicograficamente menor ou igual ao objeto no lado direito; caso contrário, false.

Comentários

Consulte operator<.

operator<<

Grava um string_view em um fluxo de saída.

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
O fluxo de saída que está sendo gravado.

Str
A string_view a ser inserida no fluxo de saída.

Valor de retorno

O fluxo de saída que está sendo gravado.

Comentários

Use este operador para inserir o conteúdo de um em um fluxo de saída string_view, por exemplo, usando std::cout.

operator>

Testa se o objeto à esquerda do operador é maior do que o objeto à direita.

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

esquerda
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

direita
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

Valor de retorno

true se o objeto à esquerda do operador for lexicograficamente maior que o objeto string_view à direita; caso contrário, false.

Comentários

Consulte operator<.

operator>=

Testa se o objeto à esquerda do operador é maior que ou igual ao objeto à direita.

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
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

right
Qualquer tipo de cadeia de caracteres conversível ou um objeto de tipo basic_string_view a ser comparado.

Valor de retorno

true se o objeto à esquerda do operador for lexicograficamente maior ou igual ao objeto à direita; caso contrário, false.

Comentários

Consulte operator<.

operator"" sv (string_view literal)

Constrói um string_view com base em um literal de cadeia de caracteres. Requer namespace std::literals::string_view_literals.

Exemplo

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 ou posterior.

Confira também

<string_view>