C ++ strcoll () - C ++ standartinė biblioteka

Funkcija strcoll () C ++ lygina dvi nulines baigiančias eilutes. Palyginimas pagrįstas dabartine lokalė, apibrėžta kategorijos LC_COLLATE.

strcmp () pakanka daugumai eilučių palyginimų, tačiau, nagrinėjant „unicode“ simbolius, kartais yra tam tikrų niuansų, dėl kurių baitų ir baitų eilučių palyginimas yra neteisingas.

Pvz., Jei lyginate dvi eilutes ispanų kalba, jose gali būti kirčiuotų simbolių, tokių kaip á, é, í, ó, ú, ü, ñ, ¿, ¡ir kt.

Pagal nutylėjimą tokie paryškinti simboliai pateikiami po visos a, b, c … z abėcėlės. Toks palyginimas būtų klaidingas, nes skirtingi a kirčiai iš tikrųjų turėtų pasirodyti prieš b.

„strcoll“ () naudoja dabartinę lokalę palyginimui atlikti ir tokiais atvejais pateikia tikslesnį rezultatą.

Tai apibrėžta antraštės faile.

strcoll () prototipas

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

Funkcijai strcoll () reikia dviejų argumentų: lhs ir rhs. Jis lygina lhs ir rhs turinį pagal dabartinę LC_COLLATE kategorijos lokalę.

strcoll () parametrai

  • lhs ir rhs: žymeklis nulinėms nutraukiamoms eilutėms palyginti.

strcoll () Grąžinimo vertė

Funkcija strcoll () grąžina:

  • teigiama vertė, jei pirmasis skirtingas simbolis lhs yra didesnis už atitinkamą simbolį rhs.
  • neigiama reikšmė, jei pirmasis skirtingas simbolis lhs yra mažesnis nei atitinkamas simbolis rhs.
  • 0, jei lhs ir rhs yra lygūs.

Pavyzdys: Kaip veikia strcoll () funkcija?

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

Kai paleisite programą, išvestis bus:

 Dabartinėje vietoje Armstrongas lenkia armiją

Įdomios straipsniai...