# std::basic_string_view<CharT,Traits>::compare

< cpp‎ | string‎ | basic string view

constexpr int compare(basic_string_view v) const noexcept; | (1) | (C++17 起)
constexpr int compare(size_type pos1, size_type count1, basic_string_view v) const; | (2) | (C++17 起)
constexpr int compare(size_type pos1, size_type count1, basic_string_view v, size_type pos2, size_type count2) const; | (3) | (C++17 起)
constexpr int compare(const CharT* s) const; | (4) | (C++17 起)
constexpr int compare(size_type pos1, size_type count1, const CharT* s) const; | (5) | (C++17 起)
constexpr int compare(size_type pos1, size_type count1, const CharT* s, size_type count2) const; | (6) | (C++17 起)

比较二个字符序列。

1) 要比较的序列长度 `rlen` 是 size() 与 v.size() 的较小者。该函数通过调用 traits::compare(data(), v.data(), rlen) 比较二个视图，并根据下表返回一个值：

条件 | 结果 | 返回值
--- | --- | ---
`Traits::compare(data(), v.data(), rlen) < 0` | `*this` 小于 `v` | <0
`Traits::compare(data(), v.data(), rlen) == 0` | `size() < v.size()` | `*this` 小于 `v` | <0
`size() == v.size()` | `*this` 等于 `v` | ​0​
`size() > v.size()` | `*this` 大于 `v` | >0
`Traits::compare(data(), v.data(), rlen) > 0` | `*this` 大于 `v` | >0

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 | - | 给定视图的要比较的首字符位置

### 返回值

若此视图小于另一字符序列则为负值，若二个字符序列相等则为零，若此视图大于另一字符序列则为正值。

### 复杂度

1) 与比较的字符数成线性。

### 参阅

operator==operator!=operator<operator>operator<=operator>=operator<=> (C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20) | 以字典序比较两个字符串视图 (函数模板)