C ++ strcoll () - C ++ standarta bibliotēka

Strcoll () funkcija C ++ salīdzina divas nulles beigu virknes. Salīdzinājums ir balstīts uz pašreizējo lokalizāciju, ko nosaka kategorija LC_COLLATE.

Ar strcmp () pietiek lielākajai daļai virkņu salīdzinājumu, taču, strādājot ar unikoda rakstzīmēm, dažreiz ir noteiktas nianses, kas padara virkņu salīdzināšanu starp baitu.

Piemēram, ja salīdzināt divas virknes spāņu valodā, tajās var būt akcentētas rakstzīmes, piemēram, á, é, í, ó, ú, ü, ñ, ¿, ¡utt.

Pēc noklusējuma šādas akcentētas rakstzīmes nāk aiz visa a, b, c… z alfabēta. Šāds salīdzinājums būtu kļūdains, jo dažādiem a akcentiem vajadzētu būt pirms b.

strcoll () izmanto pašreizējo lokalizāciju, lai veiktu salīdzināšanu, dodot precīzākus rezultātus šādos gadījumos.

Tas ir definēts galvenes failā.

strcoll () prototips

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

Funkcijai strcoll () nepieciešami divi argumenti: lhs un rhs. Tas salīdzina lhs un rhs saturu, pamatojoties uz pašreizējo LC_COLLATE kategorijas lokalizāciju.

strcoll () parametri

  • lhs un rhs: rādītājs nulles izbeigtajām virknēm, lai salīdzinātu.

strcoll () Atgriešanās vērtība

Funkcija strcoll () atgriež:

  • pozitīva vērtība, ja pirmais atšķirīgais raksturs lhs ir lielāks par atbilstošo rakstzīmi rhs.
  • negatīva vērtība, ja pirmā atšķirīgā rakstzīme lhs ir mazāka par atbilstošo rakstzīmi rhs.
  • 0, ja lhs un rhs ir vienādi.

Piemērs: Kā darbojas 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; )

Palaidot programmu, izeja būs:

 Pašreizējā lokalizācijā Armstrongs ir pirms armijas

Interesanti raksti...