C ++ strcoll () - Libreria standard C ++

La funzione strcoll () in C ++ confronta due stringhe di terminazione null. Il confronto si basa sulla locale corrente definita dalla categoria LC_COLLATE.

strcmp () è sufficiente per la maggior parte dei confronti di stringhe, ma quando si ha a che fare con caratteri Unicode, a volte ci sono alcune sfumature che rendono errato il confronto tra stringhe da byte a byte.

Ad esempio, se stai confrontando due stringhe in lingua spagnola, possono contenere caratteri accentati come á, é, í, ó, ú, ü, ñ, ¿, ¡ecc.

Per impostazione predefinita, tali caratteri accentuati vengono dopo l'intero alfabeto di a, b, c… z. Tale confronto sarebbe errato perché i diversi accenti di a dovrebbero effettivamente venire prima di b.

strcoll () utilizza le impostazioni locali correnti per eseguire il confronto fornendo un risultato più accurato in questi casi.

È definito nel file di intestazione.

prototipo strcoll ()

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

La funzione strcoll () accetta due argomenti: lhs e rhs. Confronta il contenuto di lhs e rhs in base alla locale corrente della categoria LC_COLLATE.

Parametri strcoll ()

  • lhs e rhs: puntatore alle stringhe con terminazione null da confrontare.

strcoll () Restituisce il valore

La funzione strcoll () restituisce:

  • valore positivo se il primo carattere diverso in lhs è maggiore del carattere corrispondente in rhs.
  • valore negativo se il primo carattere diverso in lhs è minore del carattere corrispondente in rhs.
  • 0 se lhs e rhs sono uguali.

Esempio: come funziona la funzione 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; )

Quando esegui il programma, l'output sarà:

 Nella situazione attuale Armstrong precede l'esercito

Articoli interessanti...