Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przekształć ciąg na podstawie informacji specyficznych dla ustawień regionalnych.
Składnia
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 docelowy.
strSource
Ciąg źródłowy.
count
Maksymalna liczba znaków do umieszczenia w pliku strDest
.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zwraca długość przekształconego ciągu, nie licząc znaku null zakończenia. Jeśli wartość zwracana jest większa lub równa count
, zawartość elementu strDest
jest nieprzewidywalna. W przypadku błędu każda funkcja ustawia errno
i zwraca wartość INT_MAX
. Dla nieprawidłowego znaku errno
jest ustawiona wartość EILSEQ
.
Uwagi
Funkcja strxfrm
przekształca ciąg wskazywany strSource
przez element na nowy formularz sortowania, który jest przechowywany w pliku strDest
. Nie więcej niż count
znaki, w tym znak null, są przekształcane i umieszczane w wynikowym ciągu. Przekształcenie jest wykonywane przy użyciu ustawienia kategorii ustawień regionalnych LC_COLLATE
. Aby uzyskać więcej informacji na temat LC_COLLATE
programu , zobacz setlocale
. strxfrm
używa bieżących ustawień regionalnych dla zachowania zależnego od ustawień regionalnych; _strxfrm_l
jest identyczna, z tą różnicą, że używa ustawień regionalnych przekazanych zamiast bieżących ustawień regionalnych. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Po przekształceniu wywołanie metody strcmp
z dwoma przekształconymi ciągami daje wyniki identyczne z wynikami wywołania strcoll
zastosowanego do dwóch oryginalnych ciągów. Podobnie jak w przypadku strcoll
i stricoll
, strxfrm
automatycznie obsługuje ciągi wielobajtowe znaków odpowiednio.
wcsxfrm
jest wersją wieloznakową ; strxfrm
argumenty ciągów wcsxfrm
to wskaźniki o szerokim znaku. W przypadku wcsxfrm
metody po przekształceniu ciągu wywołanie wcscmp
metody z dwoma przekształconymi ciągami daje wyniki identyczne z wynikami wywołania wcscoll
zastosowanego do dwóch oryginalnych ciągów. wcsxfrm
i strxfrm
zachowywać się identycznie inaczej. wcsxfrm
używa bieżących ustawień regionalnych dla zachowania zależnego od ustawień regionalnych; _wcsxfrm_l
używa ustawień regionalnych przekazanych zamiast bieżących ustawień regionalnych.
Te funkcje weryfikują swoje parametry. Jeśli strSource
jest wskaźnikiem o wartości null lub strDest
jest wskaźnikiem NULL
(chyba że liczba jest równa zero) lub jeśli count
jest większa niż INT_MAX
, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametru . Jeśli wykonywanie jest dozwolone do kontynuowania, te funkcje są ustawione errno
na EINVAL
i zwracają wartość INT_MAX
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_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 taka sama jak kolejność leksykograficzna znaków. Jednak w innych ustawieniach regionalnych kolejność znaków w zestawie znaków może różnić się od kolejności znaków leksykograficznej. Na przykład w niektórych europejskich ustawieniach regionalnych znak "a" (wartość 0x61) poprzedza znak "ä" (wartość 0xE4) w zestawie znaków, ale znak "ä" poprzedza znak "a" leksykograficznie.
W ustawieniach regionalnych, dla których zestaw znaków i kolejność znaków leksykograficznej różnią się, użyj strxfrm
w oryginalnych ciągach, a następnie strcmp
na wynikowych ciągach w celu utworzenia porównania ciągów leksykograficznego zgodnie z ustawieniem kategorii bieżącego ustawienia regionalnego LC_COLLATE
. W związku z tym, aby porównać dwa ciągi leksykograficznie w powyższych ustawieniach regionalnych, użyj strxfrm
w oryginalnych ciągach, a następnie strcmp
na ciągach wynikowych. Alternatywnie można użyć strcoll
zamiast strcmp
na oryginalnych ciągach.
strxfrm
jest w zasadzie otoką z LCMapString
LCMAP_SORTKEY
.
Wartość następującego wyrażenia to rozmiar tablicy potrzebnej do przechowywania strxfrm
przekształcenia ciągu źródłowego:
1 + strxfrm( NULL, string, 0 )
Tylko w ustawieniach regionalnych strxfrm
"C" jest odpowiednikiem następujących wywołań funkcji:
strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );
Wymagania
Procedura | Wymagany nagłówek |
---|---|
strxfrm |
<string.h> |
wcsxfrm |
<string.h> lub <wchar.h> |
_strxfrm_l |
<string.h> |
_wcsxfrm_l |
<string.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Zobacz też
Konwersja danych
localeconv
setlocale
, _wsetlocale
ustawienia regionalne
Manipulowanie ciągami
strcoll
, funkcje
strcmp
, , wcscmp
_mbscmp
strncmp
, , wcsncmp
, , _mbsncmp
_mbsncmp_l