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 EILSEQ
hodnotu .
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_COLLATE
té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 stricoll
automaticky 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