Funkcia wcsxfrm () v C ++ transformuje daný široký reťazec zakončený nulou do formy definovanej implementáciou.
Funkcia wcsxfrm () transformuje široký reťazec tak, že porovnanie dvoch transformovaných širokých reťazcov pomocou funkcie wcscmp () vedie k rovnakému výsledku ako porovnanie pôvodných širokých reťazcov pomocou funkcie wcscoll () v aktuálnom miestnom prostredí C.
Napríklad x a y sú dva široké reťazce. a a b sú dva široké reťazce vytvorené transformáciou x a y pomocou funkcie wcsxfrm.
Potom,
wcscmp (a, b) = wcscoll (x, y)
Je definované v hlavičkovom súbore.
prototyp wcsxfrm ()
size_t wcsxfrm (wchar_t * dest, const wchar_t * src, size_t count);
Funkcia wcsxfrm () prevádza prvý počet širokých znakov širokého reťazca, na ktorý odkazuje src, do formy definovanej implementáciou a výsledok sa uloží do pamäťového umiestnenia, 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.
Parametre wcsxfrm ()
- cieľ: ukazovateľ na pole, kde je uložený transformovaný široký reťazec.
- src: ukazovateľ na null ukončený široký reťazec, ktorý sa má transformovať.
- počet: maximálny počet širokých znakov na konverziu.
wcsxfrm () Vrátená hodnota
Funkcia wcsxfrm () vracia počet transformovaných širokých znakov, s výnimkou ukončovacieho prázdneho širokého znaku L ' 0'.
Príklad: Ako funguje funkcia wcsxfrm ()?
#include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const wchar_t* s1 = L"u0068u0072u006eu0065u0063"; const wchar_t* s2 = L"u0063u0068u0072u0074"; wchar_t t1(20), t2(20); cout << "wcscoll returned " << wcscoll(s1,s2) << endl; cout << "Before transformation, " << "wcscmp returned " << wcscmp(s1,s2) << endl; wcsxfrm(t1,s1,10); wcsxfrm(t2,s2,10); cout << "After transformation, " << "wcscmp returned " << wcscmp(t1,t2) << endl; return 0; )
Po spustení programu bude výstup:
wcscoll vrátil -1 Pred transformáciou vrátil wcscmp 1 Po transformácii vrátil wcscmp -1