strxfrm
, , wcsxfrm
_strxfrm_l
, ,_wcsxfrm_l
Transforme une chaîne en fonction des informations spécifiques aux paramètres régionaux.
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
);
Paramètres
strDest
Chaîne de destination.
strSource
Chaîne source.
count
Nombre maximal de caractères à placer dans strDest
.
locale
Paramètres régionaux à utiliser.
Valeur retournée
Retourne la longueur de la chaîne transformée, sans compter le caractère null de fin. Si la valeur de retour est supérieure ou égale à count
, le contenu de strDest
est imprévisible. En cas d'erreur, chaque fonction définit errno
et retourne INT_MAX
. Pour un caractère non valide, errno
a la valeur EILSEQ
.
Notes
La fonction strxfrm
transforme la chaîne pointée par strSource
en un nouveau format assemblé qui est stocké dans strDest
. Pas plus de count
caractères, y compris le caractère null, sont transformés et placés dans la chaîne résultante. La transformation s'effectue à l'aide de la catégorie LC_COLLATE
des paramètres régionaux. Pour plus d’informations sur LC_COLLATE
, consultez setlocale
. La fonction strxfrm
utilise les paramètres régionaux actuels pour son comportement dépendant des paramètres régionaux ; la fonction _strxfrm_l
est identique à la différence qu'elle utilise les paramètres régionaux passés au lieu des paramètres régionaux actuels. Pour plus d’informations, consultez Locale.
Après la transformation, un appel à avec strcmp
les deux chaînes transformées génère des résultats identiques aux résultats d’un appel à strcoll
appliquer aux deux chaînes d’origine. Comme avec strcoll
et stricoll
, strxfrm
gère automatiquement les chaînes de caractères multioctets si nécessaire.
wcsxfrm
est une version à caractères larges de strxfrm
; les arguments de chaîne de wcsxfrm
sont des pointeurs à caractères larges. Pour wcsxfrm
, après la transformation de chaîne, un appel à avec wcscmp
les deux chaînes transformées génère des résultats identiques aux résultats d’un appel à wcscoll
appliquer aux deux chaînes d’origine. Sinon,wcsxfrm
et strxfrm
se comportent de la même façon. wcsxfrm
utilise les paramètres régionaux actuels pour son comportement dépendant des paramètres régionaux ; _wcsxfrm_l
utilise les paramètres régionaux passés au lieu des paramètres régionaux actuels.
Ces fonctions valident leurs paramètres. S’il strSource
s’agit d’un pointeur Null ou strDest
est un NULL
pointeur (sauf si le nombre est égal à zéro), ou s’il count
est supérieur INT_MAX
à , le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions attribuent à errno
la valeur EINVAL
et retournent INT_MAX
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Mappages de routines de texte générique
Routine TCHAR.H | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcsxfrm |
strxfrm |
strxfrm |
wcsxfrm |
_tcsxfrm_l |
_strxfrm_l |
_strxfrm_l |
_wcsxfrm_l |
Dans les paramètres régionaux "C", l'ordre des caractères dans le jeu de caractères (jeu de caractères ASCII) est le même que l'ordre lexicographique des caractères. Toutefois, dans d'autres paramètres régionaux, l'ordre des caractères dans le jeu de caractères peut différer de l'ordre des caractères lexicographiques. Par exemple, dans certains paramètres régionaux européens, le caractère 'a' (valeur 0x61) précède le caractère 'ä ;' (valeur 0xE4) dans le jeu de caractères, mais le caractère 'ä' précède le caractère 'a' lexicographiquement.
Dans les paramètres régionaux pour lesquels le jeu de caractères et l'ordre des caractères lexicographiques diffèrent, utilisez strxfrm
sur les chaînes d'origine et strcmp
sur les chaînes résultantes pour produire une comparaison de chaîne lexicographique en fonction de la catégorie LC_COLLATE
des paramètres régionaux actuels. Par conséquent, pour comparer deux chaînes lexicographiquement dans les paramètres régionaux ci-dessus, utilisez strxfrm
sur les chaînes d'origine et strcmp
sur les chaînes résultantes. Vous pouvez également utiliser strcoll
au lieu de strcmp
sur les chaînes d'origine.
strxfrm
est essentiellement un wrapper avec LCMapString
LCMAP_SORTKEY
.
La valeur de l'expression suivante est la taille du tableau nécessaire pour contenir la transformation strxfrm
de la chaîne source :
1 + strxfrm( NULL, string, 0 )
Dans les paramètres régionaux « C » uniquement, strxfrm
équivaut aux appels de fonction suivants :
strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );
Spécifications
Routine | En-tête requis |
---|---|
strxfrm |
<string.h> |
wcsxfrm |
<string.h> ou <wchar.h> |
_strxfrm_l |
<string.h> |
_wcsxfrm_l |
<string.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Voir aussi
Conversion de données
localeconv
setlocale
, _wsetlocale
Paramètres régionaux
Manipulation de chaînes
strcoll
, fonctions
strcmp
, , wcscmp
_mbscmp
strncmp
, , wcsncmp
_mbsncmp
, ,_mbsncmp_l