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.