string: compare()

powrót

Przeznaczenie

Metoda compare() porównuje ze sobą dwa ciągi znakóch. Zwraca ona 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 ".".

Przykład

#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
	
	cin.get();
	
	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