<string_view>
Операторов
Используйте эти операторы для сравнения двух string_view
объектов или string_view
другого строкового объекта (например std::string
, или char*
), для которого предоставляется неявное преобразование.
operator!=
operator>
operator>=
operator<
operator<<
operator<=
operator==
operator""sv
operator!=
Проверяет неравенство объекта слева от оператора объекту справа от оператора.
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);
Параметры
left
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
right
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
Возвращаемое значение
true
Значение , если объект в левой части оператора не лексографически равен объекту справа; в противном случае false
.
Замечания
Неявное преобразование должно существовать от convertible_string_type к string_view
другой стороне.
Сравнение основано на попарном лексикографическом сравнении последовательностей символов. Если они имеют одинаковое количество элементов и все элементы равны, два объекта равны. В противном случае они неравны.
operator==
Проверяет равенство объекта слева от оператора объекту справа от оператора.
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);
Параметры
left
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
right
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
Возвращаемое значение
true
Значение , если объект в левой части оператора лексографически равен объекту справа; в противном случае false
.
Замечания
Неявное преобразование должно существовать от convertible_string_type к string_view
другой стороне.
Сравнение основано на попарном лексикографическом сравнении последовательностей символов. Если они имеют одинаковое количество элементов и все элементы равны, два объекта равны.
operator<
Проверяет, меньше ли объект слева от оператора, чем объект справа от оператора.
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);
Параметры
left
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
right
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
Возвращаемое значение
true
Значение , если объект в левой части оператора лексографически меньше, чем объект справа; в противном случае false
.
Замечания
Неявное преобразование должно существовать из convertible_string_type в string_view с другой стороны.
Сравнение основано на попарном лексикографическом сравнении последовательностей символов. При обнаружении первой неравной пары символов возвращается результат этого сравнения. Если не найдены неравные символы, но одна последовательность короче, короче последовательность меньше, чем длиннее. Иными словами, "кот" меньше", чем "кошки".
Пример
#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<=
Проверяет, меньше ли объект слева от оператора, чем объект справа от оператора, или равен ему.
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);
Параметры
left
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
right
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
Возвращаемое значение
true
Значение , если объект в левой части оператора лексографически меньше или равен объекту справа; в противном случае false
.
Замечания
См. раздел operator<
.
operator<<
Записывает его string_view
в выходной поток.
template <class CharType, class Traits>
inline basic_ostream<CharType, Traits>& operator<<(
basic_ostream<CharType, Traits>& Ostr, const basic_string_view<CharType, Traits> Str);
Параметры
Ostr
выходной поток, записываемый в.
Str
String_view, которые необходимо ввести в выходной поток.
Возвращаемое значение
выходной поток, записываемый в.
Замечания
Используйте этот оператор для вставки содержимого string_view
в выходной поток, например с помощью std::cout
.
operator>
Проверяет больше ли объект слева от оператора, чем объект справа от оператора.
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);
Параметры
left
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
right
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
Возвращаемое значение
true
Значение , если объект слева от оператора лексографически больше, чем string_view
объект справа; в противном случае false
.
Замечания
См. раздел operator<
.
operator>=
Проверяет больше ли объект слева от оператора, чем объект справа от оператора, или равен ему.
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);
Параметры
left
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
right
Любой преобразуемый строковый тип или объект типа basic_string_view
для сравнения.
Возвращаемое значение
true
Значение , если объект в левой части оператора лексографически больше или равен объекту справа; в противном случае false
.
Замечания
См. раздел operator<
.
operator"" sv
(string_view
литерал)
Создает из string_view
строкового литерала. Требуется пространство std::literals::string_view_literals
имен.
Пример
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 };
Требования
/std:c++17
или более поздняя версия.