C ++ strcoll () - C ++ standardna knjižnica

Funkcija strcoll () u C ++ uspoređuje dva null završna niza. Usporedba se temelji na trenutnom lokalnom jeziku definiranom kategorijom LC_COLLATE.

strcmp () je dovoljan za većinu usporedbi nizova, ali kada se radi s unicode znakovima, ponekad postoje određene nijanse zbog kojih usporedba bajtova do bajtova postaje netočna.

Na primjer, ako uspoređujete dvije žice na španjolskom jeziku, one mogu sadržavati naglašene znakove poput á, é, í, ó, ú, ü, ñ, ¿, ¡itd.

Prema zadanim postavkama, takvi naglašeni znakovi dolaze iza cijele abecede a, b, c … z. Takva bi usporedba bila pogrešna jer bi različiti akcenti a zapravo trebali doći prije b.

strcoll () koristi trenutnu lokalizaciju za obavljanje usporedbe dajući precizniji rezultat u takvim slučajevima.

Definirano je u datoteci zaglavlja.

prototip strcoll ()

 int strcoll (const char * lhs, const char * rhs);

Funkcija strcoll () uzima dva argumenta: lhs i rhs. Uspoređuje sadržaj lhs i rhs na temelju trenutnog jezika kategorije LC_COLLATE.

parametri strcoll ()

  • lhs i rhs: pokazivač na nizove koji se završavaju za usporedbu.

strcoll () Povratna vrijednost

Funkcija strcoll () vraća:

  • pozitivna vrijednost ako je prvi znak koji se razlikuje u lhs veći od odgovarajućeg znaka u rhs.
  • negativna vrijednost ako je prvi znak koji se razlikuje u lhs manji od odgovarajućeg znaka u rhs.
  • 0 ako su lhs i rhs jednaki.

Primjer: Kako funkcionira funkcija strcoll ()?

 #include #include using namespace std; int main() ( char lhs() = "Armstrong"; char rhs() = "Army"; int result; result = strcoll(lhs,rhs); cout < 0) cout << rhs << " precedes " << lhs << endl; else if (result < 0) cout << lhs << " precedes " << rhs << endl; else cout << lhs << " and " << rhs << " are same" << endl; return 0; )

Kada pokrenete program, izlaz će biti:

 U trenutnom lokalitetu Armstrong prethodi vojsci

Zanimljivi članci...