C ++ wcsxfrm () - C ++ standaardbibliotheek

De functie wcsxfrm () in C ++ transformeert een gegeven null-beëindigde brede string in een door de implementatie gedefinieerde vorm.

De functie wcsxfrm () transformeert een brede tekenreeks zodanig dat het vergelijken van twee getransformeerde brede tekenreeksen met de functie wcscmp () hetzelfde resultaat oplevert als het vergelijken van de originele brede tekenreeksen met de functie wcscoll () in de huidige C-locale.

X en y zijn bijvoorbeeld twee brede tekenreeksen. a en b zijn twee brede strings die worden gevormd door respectievelijk x en y te transformeren met de functie wcsxfrm.

Vervolgens,

 wcscmp (a, b) = wcscoll (x, y)

Het wordt gedefinieerd in het header-bestand.

wcsxfrm () prototype

 size_t wcsxfrm (wchar_t * dest, const wchar_t * src, size_t count);

De functie wcsxfrm () converteert de eerste telbrede tekens van de brede tekenreeks waarnaar wordt verwezen door src naar een door de implementatie gedefinieerde vorm en het resultaat wordt opgeslagen in de geheugenlocatie waarnaar wordt verwezen door dest.

Het gedrag van deze functie is niet gedefinieerd als:

  • grootte van bestemming is kleiner dan de vereiste grootte.
  • dest en src overlappen elkaar.

wcsxfrm () Parameters

  • dest: pointer naar de array waar de getransformeerde brede string is opgeslagen.
  • src: pointer naar de null-beëindigde brede string die moet worden getransformeerd.
  • count: maximum aantal brede tekens om te converteren.

wcsxfrm () Retourwaarde

De functie wcsxfrm () geeft het aantal getransformeerde brede tekens terug, exclusief het afsluitende nul-brede teken L ' 0'.

Voorbeeld: hoe werkt de functie 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 wcscoll keerde -1 terug Voor transformatie, wcscmp keerde 1 terug. Na transformatie gaf wcscmp -1 terug

Interessante artikelen...