Metoda compare() porównuje ze sobą dwa ciągi znakóch. Zwraca ona 0 w sytuacji, gdy dwa ciągi są takie same (wielkość liter muszą się także zgadzać), -1 gdy w porównywanywanym ciągu na i-tej pozycji znajduje się litera, która w kodzie ASCII ma większą wartość lub ciąg ten jest dłuższy oraz 1 w odwrotnej sytuacji. Odpowiednikiem tej funkcji z biblioteki cstring jest funkcja strcmp. Odwołujemy się do niej za pomocą operatora ".".
#include <iostream>
#include <string>
using namespace std;
int main() {
string tekst1("Ala ma kota"), tekst2("lokomotywa");
if(tekst1.compare(tekst2)==0)
cout<<"Podane ciągi są równe"<<endl;
else
cout<<"Podane ciągi są różne"<<endl;
//porównujemy ciąg rozpoczynający się od
//piątego znaku (numerujemy od 0) o długosci
//dwóch znaków
if(tekst1.compare(4,2,"ma")==0)
cout<<"Piąty i szósty znak w ciągu \""<<
tekst1<<"\" to ma"<<endl;
//porównujemy piąty znak w obydwu ciągach
if(tekst1.compare(4,1,tekst2,4,1)==0)
cout<<"Oba ciągi mają literkę m na piątej pozycji"<<endl;
tekst1.insert(0, "Ala");
tekst2.insert(0, "Ola");
cout<<tekst1.compare(tekst2)<<endl; // -1
cout<<tekst2.compare(tekst1)<<endl; // 1
tekst2.insert(0, "Alaaaa");
cout<<tekst1.compare(tekst2)<<endl; // -1
cout<<tekst2.compare(tekst1)<<endl; // 1
tekst2.insert(0, "A");
cout<<tekst1.compare(tekst2)<<endl; // 1
cout<<tekst2.compare(tekst1)<<endl; //-1
tekst2.insert(0, "ala");
cout<<tekst1.compare(tekst2)<<endl; // -1
cout<<tekst2.compare(tekst1)<<endl; // 1
return 0;
}
Wyjście:
Podane ci╣gi s╣ rˇ┐ne Piąty i szósty znak w ciągu "Ala ma kota" to ma Oba cią╣gi mają literkę m na piątej pozycji -1 1 -1 1 1 -1 -1 1