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 strxfrmkarakter 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 LCMapStringLCMAP_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