Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Konstanten
Nicht-Member-Funktionen
I/O
Vergleich
operator==operator!=operator<operator>operator<=operator>=operator<=>
(bis C++20)(bis C++20)(bis C++20)(bis C++20)(bis C++20)(C++20)
Numerische Konvertierungen
(C++11)(C++11)(C++11)
(C++11)(C++11) 
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Literale
Hilfsklassen
Deduction guides (C++17)
 
Definiert in Header <string>
Vergleicht zwei basic_string Objekte
template< class CharT, class Traits, class Alloc >

bool operator==( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(1) (noexcept seit C++11)
(constexpr seit C++20)
template< class CharT, class Traits, class Alloc >

bool operator!=( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(2) (bis C++20)
(noexcept seit C++11)
template< class CharT, class Traits, class Alloc >

bool operator<( const std::basic_string<CharT,Traits,Alloc>& lhs,

                const std::basic_string<CharT,Traits,Alloc>& rhs );
(3) (bis C++20)
(noexcept seit C++11)
template< class CharT, class Traits, class Alloc >

bool operator<=( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(4) (bis C++20)
(noexcept seit C++11)
template< class CharT, class Traits, class Alloc >

bool operator>( const std::basic_string<CharT,Traits,Alloc>& lhs,

                const std::basic_string<CharT,Traits,Alloc>& rhs );
(5) (bis C++20)
(noexcept seit C++11)
template< class CharT, class Traits, class Alloc >

bool operator>=( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(6) (bis C++20)
(noexcept seit C++11)
template< class CharT, class Traits, class Alloc >

constexpr /*comp-cat*/
    operator<=>( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs ) noexcept;
(7) (seit C++20)
Vergleicht einen basic_string mit einem Null-terminierten Array von T
template< class CharT, class Traits, class Alloc >

bool operator==( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const CharT* rhs );
(8) (constexpr seit C++20)
template< class CharT, class Traits, class Alloc >

bool operator==( const CharT* lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(9) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator!=( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const CharT* rhs );
(10) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator!=( const CharT* lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(11) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator<( const std::basic_string<CharT,Traits,Alloc>& lhs,

                const CharT* rhs );
(12) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator<( const CharT* lhs,

                const std::basic_string<CharT,Traits,Alloc>& rhs );
(13) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator<=( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const CharT* rhs );
(14) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator<=( const CharT* lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(15) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator>( const std::basic_string<CharT,Traits,Alloc>& lhs,

                const CharT* rhs );
(16) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator>( const CharT* lhs,

                const std::basic_string<CharT,Traits,Alloc>& rhs );
(17) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator>=( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const CharT* rhs );
(18) (bis C++20)
template< class CharT, class Traits, class Alloc >

bool operator>=( const CharT* lhs,

                 const std::basic_string<CharT,Traits,Alloc>& rhs );
(19) (bis C++20)
template< class CharT, class Traits, class Alloc >

constexpr /*comp-cat*/
    operator<=>( const std::basic_string<CharT,Traits,Alloc>& lhs,

                 const CharT* rhs );
(20) (seit C++20)

Vergleicht den Inhalt eines Strings mit einem anderen String oder einem Null-terminierten Array von CharT.

Alle Vergleiche erfolgen über die Memberfunktion compare() (die selbst in Bezug auf Traits::compare() definiert ist)

  • Zwei Strings sind gleich, wenn sowohl die Größe von lhs als auch rhs gleich ist und jedes Zeichen in lhs ein äquivalentes Zeichen in rhs an derselben Position hat.
1-7) Vergleicht zwei basic_string Objekte.
8-20) Vergleicht ein basic_string Objekt und ein Null-terminiertes Array von CharT.

Der Rückgabetyp von Drei-Wege-Vergleichsoperatoren (/*comp-cat*/) ist Traits::comparison_category, wenn dieser qualifizierte Bezeichner existiert und einen Typ bezeichnet, andernfalls std::weak_ordering. Wenn /*comp-cat*/ kein Vergleichskategoriatyp ist, ist das Programm fehlerhaft.

Die Operatoren <, <=, >, >= und != sind synthetisiert aus operator<=> und operator== beziehungsweise.

(seit C++20)

Inhalt

[bearbeiten] Parameter

lhs, rhs - Strings, deren Inhalte verglichen werden sollen

[bearbeiten] Rückgabewert

1-6,8-19) true, wenn der entsprechende Vergleich gilt, andernfalls false.
7,20) static_cast</*comp-cat*/>(lhs.compare(rhs) <=> 0).

[bearbeiten] Komplexität

Linear in der Größe der Strings.

[bearbeiten] Hinweise

Wenn mindestens ein Parameter vom Typ std::string, std::wstring, std::u8string, std::u16string oder std::u32string ist, ist der Rückgabetyp von operator<=> std::strong_ordering.

(seit C++20)

[bearbeiten] Beispiel

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2064 C++11 Ob Überladungen, die zwei basic_strings nehmen, noexcept sind, war inkonsistent;
Überladungen, die einen CharT* nehmen, waren noexcept, könnten aber UB auslösen
wurde konsistent gemacht;
noexcept entfernt
LWG 3432 C++20 Der Rückgabetyp von operator<=> musste kein Vergleichskategoriatyp sein Gefordert