Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      operator==,!=,<,<=,>,>=,<=>(std::basic_string_view)

      From cppreference.com
      <cpp‎ |string‎ |basic string view
       
       
       
      std::basic_string_view
       
      Defined in header<string_view>
      (1)
      template<class CharT,class Traits>

      constexprbool operator==(std::basic_string_view<CharT,Traits> lhs,

                                 std::basic_string_view<CharT,Traits> rhs)noexcept;
      (since C++17)
      (until C++20)
      template<class CharT,class Traits>

      constexprbool operator==(
         std::basic_string_view<CharT,Traits> lhs,

         std::type_identity_t<std::basic_string_view<CharT,Traits>> rhs)noexcept;
      (since C++20)
      template<class CharT,class Traits>

      constexprbool operator!=(std::basic_string_view<CharT,Traits> lhs,

                                 std::basic_string_view<CharT,Traits> rhs)noexcept;
      (2)(since C++17)
      (until C++20)
      template<class CharT,class Traits>

      constexprbool operator<(std::basic_string_view<CharT,Traits> lhs,

                               std::basic_string_view<CharT,Traits> rhs)noexcept;
      (3)(since C++17)
      (until C++20)
      template<class CharT,class Traits>

      constexprbool operator<=(std::basic_string_view<CharT,Traits> lhs,

                                 std::basic_string_view<CharT,Traits> rhs)noexcept;
      (4)(since C++17)
      (until C++20)
      template<class CharT,class Traits>

      constexprbool operator>(std::basic_string_view<CharT,Traits> lhs,

                               std::basic_string_view<CharT,Traits> rhs)noexcept;
      (5)(since C++17)
      (until C++20)
      template<class CharT,class Traits>

      constexprbool operator>=(std::basic_string_view<CharT,Traits> lhs,

                                 std::basic_string_view<CharT,Traits> rhs)noexcept;
      (6)(since C++17)
      (until C++20)
      template<class CharT,class Traits>

      constexpr/*comp-cat*/ operator<=>(
         std::basic_string_view<CharT,Traits> lhs,

         std::type_identity_t<std::basic_string_view<CharT,Traits>> rhs)noexcept;
      (7)(since C++20)

      Compares two views.

      All comparisons are done via thecompare() member function (which itself is defined in terms ofTraits::compare()):

      • Two views are equal if both the size oflhs andrhs are equal and each character inlhs has an equivalent character inrhs at the same position.
      • The ordering comparisons are done lexicographically – the comparison is performed by a function equivalent tostd::lexicographical_compare.

      The implementation provides sufficient additionalconstexpr andnoexcept overloads of these functions so that abasic_string_view<CharT,Traits> objectsv may be compared to another objectt with an implicit conversion tobasic_string_view<CharT,Traits>, with semantics identical to comparingsv andbasic_string_view<CharT,Traits>(t).

      (until C++20)

      The return type of three-way comparison operators (/*comp-cat*/) isTraits::comparison_category if that qualified-id denotes a type,std::weak_ordering otherwise. If/*comp-cat*/ is not a comparison category type, the program is ill-formed.

      The<,<=,>,>=, and!= operators aresynthesized fromoperator<=> andoperator== respectively.

      (since C++20)

      Contents

      [edit]Parameters

      lhs, rhs - views to compare

      [edit]Return value

      1-6)true if the corresponding comparison holds,false otherwise.
      7)static_cast</*comp-cat*/>(lhs.compare(rhs)<=>0).

      [edit]Complexity

      Linear in the size of the views.

      [edit]Notes

      Sufficient additional overloads can be implemented through non-deduced context in one parameter type.

      (until C++20)

      Three-way comparison result type ofstd::string_view,std::wstring_view,std::u8string_view,std::u16string_view andstd::u32string_view isstd::strong_ordering.

      std::type_identity_t is used for non-deduced context, which makes arguments that implicitly convertible to the string view type comparable with the string view.

      (since C++20)

      [edit]Example

      Run this code
      #include <string_view> int main(){usingnamespace std::literals;     static_assert(""sv==""sv);     static_assert(""sv=="","Selects an additional overload until C++20.");     static_assert(""==""sv,"Selects an additional overload until C++20.""Uses a rewritten candidate since C++20.");     static_assert(!(""sv!=""sv),"Uses the rewritten candidate since C++20.");     static_assert(!(""sv!=""),"Selects an additional overload until C++20;""Uses a rewritten candidate since C++20.");     static_assert(!(""!=""sv),"Selects an additional overload until C++20.""Uses a rewritten candidate since C++20.");}

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 3432C++20the return type ofoperator<=> was not required to be a comparison category typerequired
      LWG 3950C++20redundant additional overloads were still requiredoverload sets reduced
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/basic_string_view/operator_cmp&oldid=171346"

      [8]ページ先頭

      ©2009-2025 Movatter.jp