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