Condividi tramite


strxfrm, wcsxfrm, _strxfrm_l_wcsxfrm_l

Trasformare una stringa basata sulle informazioni specifiche delle impostazioni locali.

Sintassi

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
);

Parametri

strDest
Stringa di destinazione.

strSource
Stringa di origine.

count
Numero massimo di caratteri da inserire in strDest.

locale
Impostazioni locali da usare.

Valore restituito

Restituisce la lunghezza della stringa trasformata, senza contare il carattere di terminazione null. Se il valore restituito è maggiore o uguale a count, il contenuto di strDest è imprevedibile. Su un errore, ogni funzione imposta errno e restituisce INT_MAX. Per un carattere non valido, errno è impostato su EILSEQ.

Osservazioni:

La funzione strxfrm trasforma la stringa puntata da strSource in un nuovo formato fascicolato che viene archiviato in strDest. Non più di count caratteri, incluso il carattere null, vengono trasformati e inseriti nella stringa risultante. La trasformazione viene eseguita utilizzando l'impostazione di categoria LC_COLLATE delle impostazioni locali. Per altre informazioni su LC_COLLATE, vedere setlocale. strxfrm utilizza le impostazioni locali correnti per il relativo comportamento dipendente dalle impostazioni locali; _strxfrm_l è identico con la differenza che utilizza le impostazioni locali passate anziché le impostazioni locali correnti. Per altre informazioni, vedere Locale.

Dopo la trasformazione, una chiamata a strcmp con le due stringhe trasformate restituisce risultati identici ai risultati di una chiamata a strcoll applicata alle due stringhe originali. Come con strcoll e stricoll, strxfrm gestisce automaticamente le stringhe di caratteri multibyte in modo appropriato.

wcsxfrm è una versione a caratteri wide di strxfrm; gli argomenti stringa di wcsxfrm sono puntatori a caratteri wide. Per wcsxfrm, dopo la trasformazione stringa, una chiamata a wcscmp con le due stringhe trasformate restituisce risultati identici ai risultati di una chiamata a wcscoll applicata alle due stringhe originali. In caso contrario,wcsxfrm e strxfrm si comportano in modo identico. wcsxfrm utilizza le impostazioni locali correnti per il relativo comportamento dipendente dalle impostazioni locali; _wcsxfrm_l utilizza le impostazioni locali passate anziché le impostazioni locali correnti.

Queste funzioni convalidano i relativi parametri. Se strSource è un puntatore Null o strDest è un NULL puntatore (a meno che il conteggio non sia zero) o se count è maggiore di INT_MAX, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri . Se l'esecuzione può continuare, queste funzioni impostano errno su EINVAL e restituiscono INT_MAX.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Mapping di routine di testo generico

Routine TCHAR.H _UNICODE e _MBCS non definito _MBCS definito _UNICODE definito
_tcsxfrm strxfrm strxfrm wcsxfrm
_tcsxfrm_l _strxfrm_l _strxfrm_l _wcsxfrm_l

Nelle impostazioni locali "C", l'ordine dei caratteri nel set di caratteri (set di caratteri ASCII) è lo stesso dell'ordine lessicografico dei caratteri. Tuttavia, in altre impostazioni locali, l'ordine dei caratteri nel set di caratteri può differire dall'ordine lessicografico dei caratteri. Ad esempio, in determinate impostazioni locali europee, il carattere 'a' (valore 0x61) precede il carattere 'ä' (valore 0xE4) nel set di caratteri, ma il carattere 'ä' precede il carattere 'a' lessicograficamente.

Nelle impostazioni locali per le quali l'ordine del set di caratteri e l'ordine lessicografico dei caratteri differiscono, utilizzare strxfrm sulle stringhe originali e quindi strcmp sulle stringhe risultanti per produrre un confronto di stringhe lessicografico secondo l'impostazione di categoria corrente di LC_COLLATE delle impostazioni locali. Pertanto, per confrontare lessicograficamente due stringhe nelle impostazioni locali precedenti, utilizzare strxfrm sulle stringhe originali, quindi strcmp sulle stringhe risultanti. In alternativa, è possibile utilizzare strcoll anziché strcmp sulle stringhe originali.

strxfrm è fondamentalmente un wrapper intorno LCMapString a con LCMAP_SORTKEY.

Il valore della seguente espressione corrisponde alla dimensione della matrice necessaria per contenere la trasformazione strxfrm della stringa di origine:

1 + strxfrm( NULL, string, 0 )

Solo nelle impostazioni locali strxfrm "C" equivale alle chiamate di funzione seguenti:

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

Requisiti

Ciclo Intestazione obbligatoria
strxfrm <string.h>
wcsxfrm <string.h> o <wchar.h>
_strxfrm_l <string.h>
_wcsxfrm_l <string.h> o <wchar.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Vedi anche

Conversione dati
localeconv
setlocale, _wsetlocale
impostazioni locali
Manipolazione delle stringhe
Funzioni strcoll
strcmp, wcscmp, _mbscmp
strncmp, wcsncmp, _mbsncmp_mbsncmp_l