Partager via


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