<string_view>
演算子
これらの演算子を使用して、2 つの 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
への暗黙的な変換が存在する必要があります。
比較は、文字シーケンスのペアの辞書順比較に基づいています。 同じ数の要素を持ち、要素がすべて等しい場合、2 つのオブジェクトは等しくなります。 それ以外の場合は等しくありません。
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
への暗黙的な変換が存在する必要があります。
比較は、文字シーケンスのペアの辞書順比較に基づいています。 同じ数の要素を持ち、要素がすべて等しい場合、2 つのオブジェクトは等しくなります。
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 への暗黙的な変換が存在する必要があります。
比較は、文字シーケンスのペアの辞書順比較に基づいています。 最初の等しくない文字ペアが見つかった場合、その比較の結果が返されます。 等しくない文字が見つからなくても、1 つのシーケンスが短い場合は、短いシーケンスが長い方よりも小さくなります。 つまり、"cat" は "cats" よりも小さくなります。
例
#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
型のオブジェクト。
戻り値
演算子の左辺のオブジェクトが辞書順で右辺の string_view
オブジェクトより大きい場合は true
、それ以外の場合は 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
以降。