strxfrm
, , wcsxfrm
_strxfrm_l
,_wcsxfrm_l
Mengubah string berdasarkan informasi khusus lokal.
Sintaks
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
);
Parameter
strDest
String tujuan.
strSource
String sumber.
count
Jumlah maksimum karakter yang akan ditempatkan di strDest
.
locale
Lokal yang akan digunakan.
Nilai hasil
Mengembalikan panjang string yang diubah, tidak menghitung karakter null yang dihentikan. Jika nilai yang dikembalikan lebih besar dari atau sama dengan count
, konten strDest
tidak dapat diprediksi. Pada kesalahan, setiap set errno
fungsi dan mengembalikan INT_MAX
. Untuk karakter yang tidak valid, errno
diatur ke EILSEQ
.
Keterangan
Fungsi mengubah strxfrm
string yang diarahkan ke strSource
menjadi bentuk kolase baru yang disimpan di strDest
. Tidak lebih dari count
karakter, termasuk karakter null, diubah dan ditempatkan ke dalam string yang dihasilkan. Transformasi dibuat menggunakan pengaturan kategori lokal LC_COLLATE
. Untuk informasi selengkapnya tentang LC_COLLATE
, lihat setlocale
. strxfrm
menggunakan lokal saat ini untuk perilaku dependen lokalnya; _strxfrm_l
identik kecuali menggunakan lokal yang diteruskan alih-alih lokal saat ini. Untuk informasi selengkapnya, lihat Lokal.
Setelah transformasi, panggilan ke strcmp
dengan dua string yang diubah menghasilkan hasil yang identik dengan hasil panggilan untuk strcoll
diterapkan ke dua string asli. strcoll
Seperti halnya dan stricoll
, strxfrm
secara otomatis menangani string multibyte-character yang sesuai.
wcsxfrm
adalah versi strxfrm
karakter lebar ; argumen wcsxfrm
string adalah penunjuk karakter lebar. Untuk wcsxfrm
, setelah transformasi string, panggilan ke wcscmp
dengan dua string yang diubah menghasilkan hasil yang identik dengan hasil panggilan untuk wcscoll
diterapkan ke dua string asli. wcsxfrm
dan strxfrm
berulah secara identik jika tidak. wcsxfrm
menggunakan lokal saat ini untuk perilaku dependen lokalnya; _wcsxfrm_l
menggunakan lokal yang diteruskan alih-alih lokal saat ini.
Fungsi-fungsi ini memvalidasi parameternya. Jika strSource
adalah penunjuk null, atau strDest
adalah NULL
penunjuk (kecuali jumlahnya nol), atau jika count
lebih besar dari INT_MAX
, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter . Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini diatur errno
ke EINVAL
dan mengembalikan INT_MAX
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Pemetaan rutin teks generik
TCHAR. Rutinitas H | _UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tcsxfrm |
strxfrm |
strxfrm |
wcsxfrm |
_tcsxfrm_l |
_strxfrm_l |
_strxfrm_l |
_wcsxfrm_l |
Dalam lokal "C", urutan karakter dalam set karakter (set karakter ASCII) sama dengan urutan leksikografis karakter. Namun, di lokal lain, urutan karakter dalam set karakter mungkin berbeda dari urutan karakter leksikografis. Misalnya, di lokal Eropa tertentu, karakter 'a' (nilai 0x61) mendahului karakter 'ä' (nilai 0xE4) dalam set karakter, tetapi karakter 'รค' mendahului karakter 'a' secara leksikografis.
Di lokal di mana set karakter dan urutan karakter leksikografis berbeda, gunakan strxfrm
pada string asli dan kemudian strcmp
pada string yang dihasilkan untuk menghasilkan perbandingan string leksikografis sesuai dengan pengaturan kategori lokal LC_COLLATE
saat ini. Dengan demikian, untuk membandingkan dua string secara leksikografis dalam lokal di atas, gunakan strxfrm
pada string asli, lalu strcmp
pada string yang dihasilkan. Secara bergantian, Anda dapat menggunakan strcoll
daripada strcmp
pada string asli.
strxfrm
pada dasarnya adalah pembungkus dengan LCMapString
LCMAP_SORTKEY
.
Nilai ekspresi berikut adalah ukuran array yang diperlukan untuk menahan strxfrm
transformasi string sumber:
1 + strxfrm( NULL, string, 0 )
Hanya dalam lokal "C", strxfrm
setara dengan panggilan fungsi berikut:
strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );
Persyaratan
Rutin | Header yang diperlukan |
---|---|
strxfrm |
<string.h> |
wcsxfrm |
<string.h> atau <wchar.h> |
_strxfrm_l |
<string.h> |
_wcsxfrm_l |
<string.h> atau <wchar.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Baca juga
Konversi data
localeconv
setlocale
, _wsetlocale
Lokal
Manipulasi string
strcoll
Fungsi
strcmp
, , wcscmp
_mbscmp
strncmp
, , wcsncmp
_mbsncmp
,_mbsncmp_l
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk