C ++ strcoll () - standardní knihovna C ++

Funkce strcoll () v C ++ porovnává dva zakončovací řetězce null. Porovnání je založeno na aktuálním národním prostředí definovaném kategorií LC_COLLATE.

strcmp () je dost pro většinu porovnání řetězců, ale při práci se znaky unicode někdy existují určité nuance, díky nimž je porovnání řetězců bajtů nesprávné.

Pokud například porovnáváte dva řetězce ve španělštině, mohou obsahovat zvýrazněné znaky jako á, é, í, ó, ú, ü, ñ, ¿, ¡atd.

Ve výchozím nastavení následují tyto zvýrazněné znaky po celé abecedě a, b, c… z. Takové srovnání by bylo chybné, protože různé akcenty a by měly skutečně přijít před b.

strcoll () používá k provedení porovnání aktuální národní prostředí a v takových případech dává přesnější výsledek.

Je definován v hlavičkovém souboru.

strcoll () prototyp

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

Funkce strcoll () má dva argumenty: lhs a rhs. Porovnává obsah lhs a rhs na základě aktuálního národního prostředí kategorie LC_COLLATE.

strcoll () parametry

  • lhs a rhs: Ukazatel na řetězce zakončené nulou k porovnání.

strcoll () Návratová hodnota

Funkce strcoll () vrací a:

  • kladná hodnota, pokud je první odlišný znak v lhs větší než odpovídající znak v rhs.
  • záporná hodnota, pokud je první odlišný znak v lhs menší než odpovídající znak v rhs.
  • 0, pokud jsou lhs a rhs stejné.

Příklad: Jak funguje funkce 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; )

Když spustíte program, výstup bude:

 V aktuálním prostředí Armstrong předchází armádu

Zajímavé články...