Sdílet prostřednictvím


strxfrm, wcsxfrm, , _strxfrm_l_wcsxfrm_l

Transformujte řetězec na základě informací specifických pro národní prostředí.

Syntaxe

size_t strxfrm(
   char *strDest,
   const char *strSource,
   size_t count
);
size_t wcsxfrm(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count
);
size_t _strxfrm_l(
   char *strDest,
   const char *strSource,
   size_t count,
   _locale_t locale
);
size_t wcsxfrm_l(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count,
   _locale_t locale
);

Parametry

strDest
Cílový řetězec.

strSource
Zdrojový řetězec.

count
Maximální počet znaků, které se mají umístit do strDest.

locale
Národní prostředí, které se má použít

Vrácená hodnota

Vrátí délku transformovaného řetězce bez počítání ukončujícího znaku null. Pokud je vrácená hodnota větší nebo rovna count, je obsah strDest nepředvídatelný. Při chybě každá funkce nastaví errno a vrátí INT_MAX. Pro neplatný znak errno je nastaven na EILSEQhodnotu .

Poznámky

Funkce strxfrm transformuje řetězec odkazovaný na strSource nový kompletovaný formulář, který je uložen v strDest. Žádné více než count znaky, včetně znaku null, se transformují a umístí do výsledného řetězce. Transformace se provádí pomocí nastavení kategorie národního prostředí LC_COLLATE . Další informace naleznete v LC_COLLATEtématu setlocale. strxfrm používá aktuální národní prostředí pro své chování závislé na národním prostředí; _strxfrm_l je shodný s tím rozdílem, že používá národní prostředí předané místo aktuálního národního prostředí. Další informace naleznete v tématu Národní prostředí.

Po transformaci volání strcmp se dvěma transformovanými řetězci vrátí výsledky shodné s výsledky volání strcoll použitého na původní dva řetězce. Stejně jako u strcoll a stricollautomaticky strxfrm zpracovává řetězce s vícebajtovými znaky podle potřeby.

wcsxfrm je verze širokého znaku strxfrm; řetězcové argumenty wcsxfrm jsou ukazatele na široké znaky. Pro wcsxfrm, po řetězcové transformaci, volání wcscmp se dvěma transformovanými řetězci vrátí výsledky identické s výsledky volání wcscoll použitého na původní dva řetězce. wcsxfrm a strxfrm chovat se stejně jinak. wcsxfrm používá aktuální národní prostředí pro své chování závislé na národním prostředí; _wcsxfrm_l používá národní prostředí předané místo aktuálního národního prostředí.

Tyto funkce ověřují své parametry. Pokud strSource je ukazatel null nebo strDest je NULL ukazatel (pokud počet není nulový), nebo pokud count je větší než INT_MAX, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru . Pokud provádění může pokračovat, tyto funkce jsou nastaveny errno na EINVAL a vracet INT_MAX.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Rutina TCHAR.H _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_tcsxfrm strxfrm strxfrm wcsxfrm
_tcsxfrm_l _strxfrm_l _strxfrm_l _wcsxfrm_l

V národním prostředí "C" je pořadí znaků v znakové sadě (znaková sada ASCII) stejné jako lexikální pořadí znaků. V jiných národních prostředích se ale pořadí znaků v sadě znaků může lišit od pořadí lexikálních znaků. Například v některých evropských národních prostředích znak a (hodnota 0x61) předchází znaku ä. (hodnota 0xE4) v znakové sadě, ale znak 'ä' předchází znaku 'a' lexicicky.

V národních prostředích, pro které se znaková sada a pořadí lexikografických znaků liší, použijte strxfrm u původních řetězců a potom strcmp u výsledných řetězců vytvořte porovnání lexikografických řetězců podle aktuálního LC_COLLATE nastavení kategorie národního prostředí. Chcete-li tedy porovnat dva řetězce lexicicky ve výše uvedeném národním prostředí, použijte strxfrm u původních řetězců a pak strcmp na výsledných řetězcích. Alternativně můžete místo původních řetězců použít strcoll strcmp .

strxfrm je v podstatě obálka kolem LCMapString LCMAP_SORTKEY.

Hodnota následujícího výrazu je velikost pole potřebná k uložení strxfrm transformace zdrojového řetězce:

1 + strxfrm( NULL, string, 0 )

Pouze v národním prostředí strxfrm "C" je ekvivalentní následujícím voláním funkce:

strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );

Požadavky

Rutina Požadovaný hlavičkový soubor
strxfrm <string.h>
wcsxfrm <string.h> nebo <wchar.h>
_strxfrm_l <string.h>
_wcsxfrm_l <string.h> nebo <wchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Viz také

Konverze dat
localeconv
setlocale, _wsetlocale
Národní prostředí
Manipulace s řetězci
strcoll – funkce
strcmp, , wcscmp_mbscmp
strncmp, wcsncmp, , _mbsncmp_mbsncmp_l