C ++ strcoll () - štandardná knižnica C ++

Funkcia strcoll () v C ++ porovnáva dva koncové reťazce s hodnotou Null. Porovnanie je založené na aktuálnom miestnom prostredí definovanom v kategórii LC_COLLATE.

strcmp () stačí na väčšinu porovnaní reťazcov, ale pri práci so znakmi unicode niekedy existujú určité nuansy, ktoré spôsobujú nesprávne porovnanie reťazcov bajt.

Napríklad ak porovnávate dva reťazce v španielskom jazyku, môžu obsahovať zvýraznené znaky ako á, é, í, ó, ú, ü, ñ, ¿, ¡atď.

Štandardne sú tieto zvýraznené znaky za celou abecedou a, b, c … z. Takéto porovnanie by bolo chybné, pretože rôzne prízvuky a by mali skutočne prísť pred b.

strcoll () používa na vykonanie porovnania miestne nastavenie, ktoré v takýchto prípadoch poskytuje presnejší výsledok.

Je definované v hlavičkovom súbore.

strcoll () prototyp

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

Funkcia strcoll () má dva argumenty: lhs a rhs. Porovnáva obsah lhs a rhs na základe aktuálneho miestneho nastavenia kategórie LC_COLLATE.

strcoll () parametre

  • lhs a rhs: Ukazovateľ na null ukončené reťazce na porovnanie.

strcoll () Vrátená hodnota

Funkcia strcoll () vracia a:

  • kladná hodnota, ak je prvý odlišný znak v lhs väčší ako zodpovedajúci znak v rhs.
  • záporná hodnota, ak je prvý odlišný znak v lhs menší ako zodpovedajúci znak v rhs.
  • 0, ak sú lhs a rhs rovnaké.

Príklad: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 V súčasnom prostredí Armstrong predchádza armádu

Zaujímavé články...