Funkcia strxfrm () v C ++ transformuje daný bajtový reťazec ukončený nulou do formy definovanej implementáciou.
Funkcia strxfrm () transformuje reťazec tak, že porovnanie dvoch transformovaných reťazcov pomocou funkcie strcmp () vedie k rovnakému výsledku ako porovnanie pôvodných reťazcov pomocou funkcie strcoll () v aktuálnom miestnom prostredí C.
Napríklad x a y sú dva reťazce. a a b sú dva reťazce vytvorené transformáciou x a y pomocou funkcie strxfrm. Potom je volanie strcmp (a, b) rovnaké ako volanie strcoll (x, y).
prototyp strxfrm ()
size_t strxfrm (char * dest, const char * src, size_t count);
Funkcia strxfrm () prevádza prvé počítané znaky reťazca, na ktoré odkazuje src, do formy definovanej implementáciou a výsledok sa uloží do pamäte, na ktoré ukazuje cieľ.
Správanie tejto funkcie nie je definované, ak:
- veľkosť cieľa je menšia ako požadovaná veľkosť.
- prekrývajú sa ciele dest a src.
Je definované v hlavičkovom súbore.
parametre strxfrm ()
- cieľ: ukazovateľ na pole, kde je uložený transformovaný reťazec.
- src: ukazovateľ na null zakončený reťazec, ktorý sa má transformovať.
- počet: maximálny počet znakov, ktoré sa majú previesť.
strxfrm () Vrátená hodnota
Funkcia strxfrm () vracia počet transformovaných znakov s výnimkou ukončovacieho nulového znaku „ 0“.
Príklad: Ako funguje funkcia strxfrm ()?
#include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const char* s1 = "hrnec"; const char* s2 = "chrt"; char t1(20), t2(20); cout << "strcoll returned " << strcoll(s1,s2) << endl; cout << "Before transformation, " << "strcmp returned " << strcmp(s1,s2) << endl; strxfrm(t1,s1,10); strxfrm(t2,s2,10); cout << "After transformation, " << "strcmp returned " << strcmp(t1,t2) << endl; return 0; )
Po spustení programu bude výstup:
strcoll vrátil -1 Pred transformáciou vrátil strcmp 1 Po transformácii vrátil strcmp -1