跳到主要内容

std::string_view compare() 方法

// (1) Const version only
constexpr int compare( basic_string_view v ) const noexcept;

// (2) Const version only
constexpr int compare( size_type pos1, size_type count1,
basic_string_view v ) const;

// (3) Const version only
constexpr int compare( size_type pos1, size_type count1, basic_string_view v,
size_type pos2, size_type count2 ) const;

// (4) Const version only
constexpr int compare( const CharT* s ) const;

// (5) Const version only
constexpr int compare( const CharT* s ) const;
constexpr int compare( size_type pos1, size_type count1,
const CharT* s ) const;

// (6) Const version only
constexpr int compare( size_type pos1, size_type count1,
const CharT* s, size_type count2 ) const;

比较两个字符序列。

  • (1) 要比较的序列长度 rlenstd::min(size(), v.size())
    该函数通过调用 Traits::compare(data(), v.data(), rlen) 来比较这两个视图,并根据下表返回一个值

    重要

    本节需要改进。您可以通过编辑此文档页面来帮助我们。

  • (2) 等同于 substr(pos1, count1).compare(v)

  • (3) 等同于 substr(pos1, count1).compare(v.substr(pos2, count2))

  • (4) 等同于 compare(basic_string_view(s))

  • (5) 等同于 substr(pos1, count1).compare(basic_string_view(s))

  • (6) 等同于 substr(pos1, count1).compare(basic_string_view(s, count2))

参数

  • v - 要比较的视图
  • s - 指向要比较的字符串的指针
  • count1 - 此视图要比较的字符数
  • pos1 - 此视图中要比较的第一个字符的位置
  • count2 - 给定视图要比较的字符数
  • pos2 - 给定视图中要比较的第一个字符的位置

返回值

  • 如果 *this 在字典序上出现在参数指定的字符序列之前,则返回负值。
  • 如果两个字符序列比较相等,则返回零。
  • 如果 *this 在字典序上出现在参数指定的字符序列之后,则返回正值。

复杂度

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

异常

(无)

可能的实现

template<class CharT, class Traits, class Alloc>
int basic_string_view<CharT, Traits, Alloc>::compare(std::basic_string_view s) const noexcept
{
size_type lhs_sz = size();
size_type rhs_sz = s.size();
int result = traits_type::compare(data(), s.data(), std::min(lhs_sz, rhs_sz));
if (result != 0)
return result;
if (lhs_sz < rhs_sz)
return -1;
if (lhs_sz > rhs_sz)
return 1;
return 0;
}

示例

Main.cpp
#include <string_view>
int main() {
using std::operator""sv;
static_assert( "abc"sv.compare("abcd"sv) < 0 );
static_assert( "abcd"sv.compare("abc"sv) > 0 );
static_assert( "abc"sv.compare("abc"sv) == 0 );
static_assert( ""sv.compare(""sv) == 0 );
}
本文源自此 CppReference 页面。它可能经过修改以进行改进或适应编辑偏好。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。

std::string_view compare() 方法

// (1) Const version only
constexpr int compare( basic_string_view v ) const noexcept;

// (2) Const version only
constexpr int compare( size_type pos1, size_type count1,
basic_string_view v ) const;

// (3) Const version only
constexpr int compare( size_type pos1, size_type count1, basic_string_view v,
size_type pos2, size_type count2 ) const;

// (4) Const version only
constexpr int compare( const CharT* s ) const;

// (5) Const version only
constexpr int compare( const CharT* s ) const;
constexpr int compare( size_type pos1, size_type count1,
const CharT* s ) const;

// (6) Const version only
constexpr int compare( size_type pos1, size_type count1,
const CharT* s, size_type count2 ) const;

比较两个字符序列。

  • (1) 要比较的序列长度 rlenstd::min(size(), v.size())
    该函数通过调用 Traits::compare(data(), v.data(), rlen) 来比较这两个视图,并根据下表返回一个值

    重要

    本节需要改进。您可以通过编辑此文档页面来帮助我们。

  • (2) 等同于 substr(pos1, count1).compare(v)

  • (3) 等同于 substr(pos1, count1).compare(v.substr(pos2, count2))

  • (4) 等同于 compare(basic_string_view(s))

  • (5) 等同于 substr(pos1, count1).compare(basic_string_view(s))

  • (6) 等同于 substr(pos1, count1).compare(basic_string_view(s, count2))

参数

  • v - 要比较的视图
  • s - 指向要比较的字符串的指针
  • count1 - 此视图要比较的字符数
  • pos1 - 此视图中要比较的第一个字符的位置
  • count2 - 给定视图要比较的字符数
  • pos2 - 给定视图中要比较的第一个字符的位置

返回值

  • 如果 *this 在字典序上出现在参数指定的字符序列之前,则返回负值。
  • 如果两个字符序列比较相等,则返回零。
  • 如果 *this 在字典序上出现在参数指定的字符序列之后,则返回正值。

复杂度

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

异常

(无)

可能的实现

template<class CharT, class Traits, class Alloc>
int basic_string_view<CharT, Traits, Alloc>::compare(std::basic_string_view s) const noexcept
{
size_type lhs_sz = size();
size_type rhs_sz = s.size();
int result = traits_type::compare(data(), s.data(), std::min(lhs_sz, rhs_sz));
if (result != 0)
return result;
if (lhs_sz < rhs_sz)
return -1;
if (lhs_sz > rhs_sz)
return 1;
return 0;
}

示例

Main.cpp
#include <string_view>
int main() {
using std::operator""sv;
static_assert( "abc"sv.compare("abcd"sv) < 0 );
static_assert( "abcd"sv.compare("abc"sv) > 0 );
static_assert( "abc"sv.compare("abc"sv) == 0 );
static_assert( ""sv.compare(""sv) == 0 );
}
本文源自此 CppReference 页面。它可能经过修改以进行改进或适应编辑偏好。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。