Partager via


strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

Transformez une chaîne en fonction de les informations spécifiques aux paramètres régionaux.

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
    Les paramètres régionaux à utiliser.

Valeur de retour

Retourne la longueur de la chaîne transformée, sans compter le caractère NULL de fin.si la valeur de retour est supérieur ou égal à count, le contenu d' strDest est imprévisible.Sur une erreur, chaque fonction définit errno et retourne INT_MAX.pour un caractère non valide, errno est défini à EILSEQ.

Notes

La fonction d' strxfrm transforme la chaîne désignée par strSource dans un nouveau formulaire assemblé stocké dans strDest.Pas plus que des caractères d' count , y compris le caractère Null, sont transformés et placés dans la chaîne résultante.La transformation est effectuée à l'aide de le paramètre de catégorie d' LC_COLLATE des paramètres régionaux.Pour plus d'informations sur LC_COLLATE, consultez setlocale.strxfrm utilise les paramètres régionaux définis pour son comportement dépendant des paramètres régionaux ; _strxfrm_l est identique mais il utilise les paramètres régionaux passés au lieu des paramètres régionaux.Pour plus d'informations, consultez Paramètres régionaux.

Après la transformation, un appel à strcmp avec les deux chaînes transformées que cède résultats identiques à celles d'un appel à strcoll appliquée aux deux chaînes d'origine.Comme avec strcoll et stricoll, strxfrm gère automatiquement les chaînes de caractères multioctets à votre convenance.

wcsxfrm est une version à caractère élargi d' strxfrm; les arguments de chaîne d' wcsxfrm sont les pointeurs à caractères larges.Pour wcsxfrm, après la transformation de chaîne, un appel à wcscmp avec les deux chaînes transformées que cède résultats identiques à celles d'un appel à wcscoll appliquée aux deux chaînes d'origine.wcsxfrm et strxfrm se comportent de sinon.wcsxfrm utilise les paramètres régionaux définis 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.

ces fonctions valident leurs paramètres.Si strSource est un pointeur null, ou strDest est un pointeur null (à moins que le nombre est égal à zéro), ou si count est supérieure INT_MAX, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres .Si est autorisé à l'exécution de se poursuivre, ces errno défini par fonctions à EINVAL et à INT_MAXde retour.

mappages de routines de texte générique

routine de TCHAR.H

_MBCS & de _UNICODE non défini

_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 celui 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 «&#x00E4 ;  » (valeur 0xE4) dans le jeu de caractères, mais le caractère « ä » précède le caractère « a » lexicographique.

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 puis strcmp sur les chaînes résultantes de produire une comparaison de chaînes lexicographique fonction de le paramètre actuel de catégorie d' LC_COLLATE des paramètres régionaux.Ainsi, pour comparer deux chaînes lexicographique dans les paramètres régionaux ci-dessus, utilisez strxfrm sur les chaînes d'origine, puis strcmp sur les chaînes résultantes.Ou bien, vous pouvez utiliser strcoll plutôt qu' strcmp sur les chaînes d'origine.

strxfrm est essentiellement un wrapper autour de LCMapString avec LCMAP_SORTKEY.

La valeur de l'expression suivante est la taille du tableau nécessaire pour maintenir la transformation d' strxfrm de la chaîne source :

1 + strxfrm( NULL, string, 0 )

Dans les paramètres régionaux « C » uniquement, strxfrm équivaut à ce qui suit :

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

Configuration requise

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 des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Conversion de données

localeconv

setlocale, _wsetlocale

Paramètres régionaux

Manipulation de chaînes (CRT)

fonctions de strcoll

strcmp, wcscmp, _mbscmp

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l