Udostępnij za pośrednictwem


strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

Przekształć ciąg w oparciu o informacje specyficzne dla danej lokalizacji.

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

Parametry

  • strDest
    Ciąg docelowego.

  • strSource
    Ciąg źródłowy.

  • count
    Maksymalna liczba znaków do umieszczenia w strDest*.*

  • locale
    Ustawienia regionalne, aby użyć.

Wartość zwracana

Zwraca długość ciągu przekształcone, nie licząc kończącego znaku null.Jeśli wartość zwracana jest większa niż lub równa count, zawartości strDest jest nieprzewidywalne.Błąd, każda funkcja ustawi errno i zwraca INT_MAX.Dla nieprawidłowy znak errno jest ustawiona na EILSEQ.

Uwagi

strxfrm Funkcja przekształca ciąg wskazywanej przez strSource w nowym sortowane formularza, który jest przechowywany w strDest.Nie więcej niż count znaków, łącznie ze znakiem null są przekształcane i umieszczane w wynikowy ciąg znaków.Przekształcenie dokonuje się przy użyciu ustawień regionalnych LC_COLLATE ustawienia kategorii.Aby uzyskać więcej informacji na LC_COLLATE, zobacz setlocale.strxfrmwykorzystuje bieżące ustawienia regionalne dla jego zachowanie zależnego od ustawień regionalnych; _strxfrm_ljest identyczny z wyjątkiem, że korzysta z ustawień regionalnych, przekazany zamiast bieżące ustawienia regionalne.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

Po przekształceniu, wywołanie do strcmp z dwóch ciągów przekształconych daje wyniki identyczne do tych wywołanie do strcoll stosowane do oryginalnego dwóch ciągów.Tak jak w strcoll i stricoll, strxfrm automatycznie obsługuje ciągi znaków wielobajtowych, jak właściwe.

wcsxfrmjest to wersja szerokich znaków strxfrm; argumenty ciąg wcsxfrm są wskaźniki szerokich znaków.Dla wcsxfrm, po transformacji ciąg, wywołanie do wcscmp z dwóch ciągów przekształconych daje wyniki identyczne do tych wywołanie do wcscoll stosowane do oryginalnego dwóch ciągów.wcsxfrmi strxfrm zachowują się identycznie inaczej.wcsxfrmwykorzystuje bieżące ustawienia regionalne dla jego zachowanie zależnego od ustawień regionalnych; _wcsxfrm_lużywa ustawień regionalnych, przekazany zamiast bieżące ustawienia regionalne.

Te funkcje sprawdzania poprawności ich parametrów.Jeśli strSource jest wskaźnik null, lub strDest jest wskaźnik NULL (chyba, że liczba jest równa zero), lub jeśli count jest większa niż INT_MAX, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru .Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EINVAL i zwraca INT_MAX.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rutynowe H

_UNICODE & Nie zdefiniowano _MBCS

_MBCS, definicja

_UNICODE, definicja

_tcsxfrm

strxfrm

strxfrm

wcsxfrm

_tcsxfrm_l

_strxfrm_l

_strxfrm_l

_wcsxfrm_l

W ustawieniach regionalnych "C" kolejność znaków w zestawie znaków (zestaw znaków ASCII) jest taki sam, jak lexicographic kolejność znaków.Jednak w innych lokalizacjach, w kolejności znaków w zestawie znaków może różnić się od kolejności znaków lexicographic.Na przykład, w przypadku niektórych języków europejskich, znak wartość "" (0x61) poprzedza znak "& # x00E4;" (wartość 0xE4) w zestawie znaków, ale znak "ä" poprzedza znak 'a' lexicographically.

W ustawieniach regionalnych, dla których zestaw znaków i kolejność znaków lexicographic różnią się, użyj strxfrm na oryginalnym ciągi a następnie strcmp na wynikowy ciągów w celu utworzenia porównanie ciągu lexicographic zgodnie z bieżące ustawienia regionalne LC_COLLATE ustawienia kategorii.W ten sposób, aby porównać dwa ciągi lexicographically w powyższych ustawień regionalnych, należy użyć strxfrm na oryginalnym ciągów, następnie strcmp na ciągi wynikowy.Ewentualnie można użyć strcoll zamiast strcmp na oryginalnym ciągi.

strxfrmzasadniczo jest otoką wokół LCMapString z LCMAP_SORTKEY.

Wartość następującego wyrażenia jest rozmiar tablicy, potrzebnych do przechowywania strxfrm transformacji ciąg źródłowy:

1 + strxfrm( NULL, string, 0 )

W ustawieniach regionalnych "C", strxfrm jest równoważne z następujących czynności:

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

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strxfrm

<string.h>

wcsxfrm

<string.h> lub <wchar.h>

_strxfrm_l

<string.h>

_wcsxfrm_l

<string.h> lub <wchar.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Konwersja danych

localeconv

setLocale, _wsetlocale

Ustawienia regionalne

Manipulowanie ciągami (CRT)

Funkcje strcoll

strcmp, wcscmp, _mbscmp

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l