<string_view> 运算符

使用这些运算符比较两个 string_view 对象,或者比较一个 string_view 和为其提供了隐式转换的某个其他字符串对象(例如,std::stringchar*)。

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 的隐式转换。

该比较基于字符序列的成对按字典顺序比较。 遇到第一个不相等的字符对时,将返回该比较的结果。 如果未找到不相等的字符,但一个序列较短,则较短的序列小于较长的序列。 换句话说,“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"" svstring_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 或更高版本。

另请参阅

<string_view>