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

��自cppreference.com
 
 
 
 
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) 要比較的序列長度 rlensize()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) 與比較的字符數成線性。

示例

#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);
}

參閱

比較兩個字符串
(std::basic_string<CharT,Traits,Allocator> 的公開成員函數) [編輯]
(C++20 移除)(C++20 移除)(C++20 移除)(C++20 移除)(C++20 移除)(C++20)
以字典序比較兩個字符串視圖
(函數模板) [編輯]