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