Partilhar via


<string_view> operadores

Use esses operadores para comparar dois string_view objetos, 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!=

Testa se o objeto no lado esquerdo do operador não é igual ao objeto no lado direito.

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 do tipo basic_string_view a ser comparado.

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

Valor de retorno

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

Observações

Deve existir uma conversão implícita do convertible_string_type para o string_view outro lado.

A comparação é baseada em uma comparação lexicográfica par das sequências de caracteres. Se eles têm o mesmo número de elementos e os elementos são todos iguais, os dois objetos são iguais. Caso contrário, são desiguais.

operator==

Testa se o objeto no lado esquerdo do operador é igual ao objeto no lado direito.

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 do tipo basic_string_view a ser comparado.

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

Valor de retorno

true se o objeto do lado esquerdo do operador for lexicograficamente igual ao objeto do lado direito; caso contrário false.

Observações

Deve existir uma conversão implícita do convertible_string_type para o string_view outro lado.

A comparação é baseada em uma comparação lexicográfica par das sequências de caracteres. Se eles têm o mesmo número de elementos e os elementos são todos iguais, os dois objetos são iguais.

operator<

Testa se o objeto no lado esquerdo do operador é menor do que o objeto no lado direito.

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 do tipo basic_string_view a ser comparado.

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

Valor de retorno

true se o objeto do lado esquerdo do operador for lexicograficamente menor do que o objeto do lado direito; caso contrário false.

Observações

Deve existir uma conversão implícita do convertible_string_type para o string_view outro lado.

A comparação é baseada em uma comparação lexicográfica par das sequências de caracteres. Quando o primeiro par desigual de caracteres é encontrado, o resultado dessa comparação é retornado. Se não forem encontrados caracteres desiguais, mas uma sequência for mais curta, a sequência mais curta será menor do que a mais longa. Por outras palavras, "gato" é menos do 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 no lado esquerdo do operador é menor ou igual ao objeto no lado direito.

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 do tipo basic_string_view a ser comparado.

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

Valor de retorno

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

Observações

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
um fluxo de saída sendo gravado.

Str
O string_view a ser inserido em um fluxo de saída.

Valor de retorno

um fluxo de saída sendo gravado.

Observações

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

operator>

Testa se o objeto no lado esquerdo do operador é maior do que o objeto no lado direito.

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 do tipo basic_string_view a ser comparado.

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

Valor de retorno

truese o objeto do lado esquerdo do operador for lexicograficamente maior do que o string_view objeto do lado direito;false

Observações

Consulte operator<.

operator>=

Testa se o objeto no lado esquerdo do operador é maior ou igual ao objeto no lado direito.

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 do tipo basic_string_view a ser comparado.

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

Valor de retorno

true se o objeto do lado esquerdo do operador for lexicograficamente maior ou igual ao objeto do lado direito; caso contrário false.

Observações

Consulte operator<.

operator"" sv string_view(literal)

Constrói um string_view literal a partir de uma 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 };

Requerimentos

/std:c++17 ou mais tarde.

Ver também

<string_view>