C ++ strcoll () - C ++ - vakiokirjasto

Strcoll () -funktio C ++: ssa vertaa kahta nollaa päättävää merkkijonoa. Vertailu perustuu LC_COLLATE-luokan määrittelemään nykyiseen alueeseen.

strcmp () riittää useimpiin merkkijonovertailuihin, mutta käsiteltäessä unicode-merkkejä joskus on tiettyjä vivahteita, jotka tekevät tavu-tavu merkkijonojen vertailusta virheellisen.

Jos esimerkiksi vertailet kahta merkkijonoa espanjan kielellä, ne voivat sisältää korostettuja merkkejä, kuten á, é, í, ó, ú, ü, ñ, ¿, ¡jne.

Oletusarvon mukaan tällaiset korostetut merkit tulevat a, b, c… z: n koko aakkosen jälkeen. Tällainen vertailu olisi virheellinen, koska a: n eri aksenttien tulisi tosiasiallisesti tulla ennen b: tä.

strcoll () käyttää nykyistä aluetta vertailun suorittamiseen ja antaa tarkemman tuloksen tällaisissa tapauksissa.

Se määritetään otsikkotiedostossa.

strcoll () -prototyyppi

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

Strcoll () -funktiolla on kaksi argumenttia: lhs ja rhs. Se vertaa lhs: n ja rh: n sisältöä nykyisen LC_COLLATE-luokan mukaan.

strcoll () -parametrit

  • lhs ja rhs: Nollan päättyneiden merkkijonojen osoitin vertailua varten.

strcoll () Palautusarvo

Strcoll () -funktio palauttaa a:

  • positiivinen arvo, jos ensimmäinen eroava merkki lhs on suurempi kuin vastaava merkki rhs.
  • negatiivinen arvo, jos ensimmäinen eroava merkki lhs on pienempi kuin vastaava merkki rhs.
  • 0, jos lhs ja rhs ovat yhtä suuret.

Esimerkki: Kuinka strcoll () -toiminto toimii?

 #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; )

Kun suoritat ohjelmaa, tulos on:

 Nykyisessä maassa Armstrong edeltää armeijaa

Mielenkiintoisia artikkeleita...