Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: Mrovqa
Język C++

basic_string::compare

[metoda] Porównuje zawartości dwóch stringów lub ich części.

Składnia

C/C++
#include <string>

namespace std
{
    template <
    class TypZnaku,
    class CechowanieZnakow = char_traits < TypZnaku >,
    class Alokator = allocator < TypZnaku >
    >
    class basic_string
    {
    private:
        typedef basic_string < TypZnaku, CechowanieZnakow, Alokator > UtworzonaKlasaT;
    public:
        int compare( const UtworzonaKlasaT & str ) const noexcept;
       
        int compare( size_type _pos, size_type _len, const UtworzonaKlasaT & _str ) const;
        int compare( size_type _pos, size_type _len, const UtworzonaKlasaT & _str, size_type _subpos, size_type _sublen ) const;
       
        int compare( const TypZnaku * _s ) const;
        int compare( size_type _pos, size_type _len, const TypZnaku * _s ) const;
       
        int compare( size_type _pos, size_type _len, const TypZnaku * _s, size_type _n ) const;
       
    }; //class basic_string
} //namespace std

Argumenty

ArgumentOpis
_strInny obiekt tego samego typu co aktualny (z uwzględnieniem parametrów szablonu!) wykorzystywany w całości bądź częściowo do operacji porównania stringów.
_posPozycja pierwszego znaku aktualnego stringu, od którego zaczyna się porównywanie.
_lenMaksymalna długość porównywanego podciągu aktualnego obiektu.
_subpos, _sublenTe same znaczenie, co _pos i _len odnoszące się do obiektu, z którym porównujemy aktualny.
_sWskaźnik na tablicę znaków. Jeżeli argument _n jest określony, to oznacza on liczbę znaków do porównania. W przeciwnym wypadku ową długość określa bajt zerowy.
_nLiczba znaków do porównania.

Zwracana wartość

Informuje o relacji obiektu porównywanego i porównującego. Obiekt porównujący to ten, na którym została wywołana metoda.
WartośćRelacja między stringiem porównywanym i porównującym
0Są identyczne
<0Wartość pierwszego różnego znaku jest większa w stringu porównywanym albo wszystkie porównane znaki są sobie równe, ale string porównywany jest dłuższy
>0Wartość pierwszego różnego znaku jest mniejsza w stringu porównywanym albo wszystkie porównane znaki są sobie równe, ale string porównywany jest krótszy

Opis szczegółowy

Porównuje dwa stringi lub ich części przy pomocy » standard C++ » char_traitscompare (domyślnie leksykograficznie).

Rzucane wyjątki

Jeżeli wyjątek zostanie rzucony, wartość obiektu nie ulegnie zmianie.

Jeżeli _s nie wskazuje na wystarczająco dużą tablicę, to zachowanie jest niezdefiniowane.

Jeżeli _pos jest większe od długości aktualnego obiektu lub _subpos jest większe od długości _str, to wtedy zostanie rzucony » standard C++out_of_range.

Przykład

C/C++
#include <iostream>
#include <string>

typedef std::basic_string < char, std::char_traits < char >, std::allocator < char >> MojString;
int main()
{
    MojString str1( "zielone jablko" );
    MojString str2( "czerwone jablko" );
   
    if( str1.compare( str2 ) > 0 ) // bo 'z' > 'c'
         std::cout << str1 << " to nie " << str2 << '\n';
   
    if( str1.compare( 8, 6, "jablko" ) == 0 )
         std::cout << "ale nadal " << str1 << " jest jablkiem\n";
   
    if( str2.compare( str2.size() - 6, 6, "jablko" ) == 0 )
         std::cout << "oraz " << str2 << " takze jest jablkiem\n";
   
    if( str1.compare( 8, 6, str2, 9, 6 ) == 0 )
         std::cout << "wiec oba sa jablkami\n";
   
    return 0;
}
Standardowe wyjście programu:
zielone jablko to nie czerwone jablko
ale nadal zielone jablko jest jablkiem
oraz czerwone jablko takze jest jablkiem
wiec oba sa jablkami

Zagadnienia powiązane

findWyszukuje pierwszego wystąpienia danego łańcucha znaków. (metoda)
replaceZamienia część znaków na inne. (metoda)
substrZwraca podciąg łańcucha znaków. (metoda)

Linki zewnętrzne