<string_view>
operators
Use these operators to compare two string_view
objects, or a string_view
and some other string object (for example std::string
, or char*
) for which an implicit conversion is provided.
operator!=
operator>
operator>=
operator<
operator<<
operator<=
operator==
operator""sv
operator!=
Tests if the object on the left side of the operator is not equal to the object on the right side.
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);
Parameters
left
Any convertible string type or an object of type basic_string_view
to be compared.
right
Any convertible string type or an object of type basic_string_view
to be compared.
Return Value
true
if the object on the left side of the operator isn't lexicographically equal to the object on the right side; otherwise false
.
Remarks
An implicit conversion must exist from convertible_string_type to the string_view
on the other side.
The comparison is based on a pairwise lexicographical comparison of the character sequences. If they have the same number of elements and the elements are all equal, the two objects are equal. Otherwise, they're unequal.
operator==
Tests if the object on the left side of the operator is equal to the object on the right side.
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);
Parameters
left
Any convertible string type or an object of type basic_string_view
to be compared.
right
Any convertible string type or an object of type basic_string_view
to be compared.
Return Value
true
if the object on the left side of the operator is lexicographically equal to the object on the right side; otherwise false
.
Remarks
An implicit conversion must exist from convertible_string_type to the string_view
on the other side.
The comparison is based on a pairwise lexicographical comparison of the character sequences. If they have the same number of elements and the elements are all equal, the two objects are equal.
operator<
Tests if the object on the left side of the operator is less than the object on the right side.
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);
Parameters
left
Any convertible string type or an object of type basic_string_view
to be compared.
right
Any convertible string type or an object of type basic_string_view
to be compared.
Return Value
true
if the object on the left side of the operator is lexicographically less than the object on the right side; otherwise false
.
Remarks
An implicit conversion must exist from convertible_string_type to the string_view on the other side.
The comparison is based on a pairwise lexicographical comparison of the character sequences. When the first unequal pair of characters is encountered, the result of that comparison is returned. If no unequal characters are found, but one sequence is shorter, the shorter sequence is less than the longer one. In other words, "cat" is less than "cats".
Example
#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<=
Tests if the object on the left side of the operator is less than or equal to the object on the right side.
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);
Parameters
left
Any convertible string type or an object of type basic_string_view
to be compared.
right
Any convertible string type or an object of type basic_string_view
to be compared.
Return Value
true
if the object on the left side of the operator is lexicographically less than or equal to the object on the right side; otherwise false
.
Remarks
See operator<
.
operator<<
Writes a string_view
into an output stream.
template <class CharType, class Traits>
inline basic_ostream<CharType, Traits>& operator<<(
basic_ostream<CharType, Traits>& Ostr, const basic_string_view<CharType, Traits> Str);
Parameters
Ostr
an output stream being written to.
Str
The string_view to be entered into an output stream.
Return Value
an output stream being written to.
Remarks
Use this operator to insert the contents of a string_view
into an output stream, for example using std::cout
.
operator>
Tests if the object on the left side of the operator is greater than the object on the right side.
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);
Parameters
left
Any convertible string type or an object of type basic_string_view
to be compared.
right
Any convertible string type or an object of type basic_string_view
to be compared.
Return Value
true
if the object on the left side of the operator is lexicographically greater than the string_view
object on the right side; otherwise false
.
Remarks
See operator<
.
operator>=
Tests if the object on the left side of the operator is greater than or equal to the object on the right side.
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);
Parameters
left
Any convertible string type or an object of type basic_string_view
to be compared.
right
Any convertible string type or an object of type basic_string_view
to be compared.
Return Value
true
if the object on the left side of the operator is lexicographically greater than or equal to the object on the right side; otherwise false
.
Remarks
See operator<
.
operator"" sv
(string_view
literal)
Constructs a string_view
from a string literal. Requires namespace std::literals::string_view_literals
.
Example
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 };
Requirements
/std:c++17
or later.