Perbedaan Fungsi String

Topik ini menjelaskan perbedaan di antara fungsi string yang digunakan dalam menangani Unicode dan informasi kumpulan karakter. Fungsi-fungsi ini memiliki implementasi halaman kodeUnicode dan Windows untuk mendukung parameter halaman kode Unicode dan Windows.

Fungsi string berikut tidak memerlukan komentar khusus. Implementasi halaman kode Unicode dan Windows mereka bekerja secara identik.

Nilai panjang yang diambil oleh salah satu fungsi panjang string selalu didasarkan pada lebar karakter normal: 8 bit untuk halaman kode Windows, 16 bit untuk Unicode. Nilai ini sering disebut sebagai "jumlah karakter." Istilah ini benar-benar benar benar karena halaman kode Windows yang menggunakan kumpulan karakter byte ganda (DBCSs) memiliki beberapa karakter lebar penuh yang sebenarnya diwakili oleh dua byte berturut-turut. Situasi serupa muncul untuk pengganti di Unicode.

Fungsi string berikut sensitif terhadap lokal utas saat ini, berasal dari bahasa yang dipilih pengguna di Panel Kontrol. Fungsi lstrcmp dan lstrcmpi tidak melakukan perbandingan byte seperti namesakes ANSI mereka, misalnya, strcmp. Sebaliknya, mereka membandingkan string sesuai dengan aturan lokal.

Fungsi berikut mengonversi antara kumpulan karakter OEM dan halaman kode Windows saat ini atau Unicode, tergantung pada versi mana yang digunakan:

Fungsi cetak, misalnya, StringCbPrintf, mendukung Unicode dengan menyediakan jenis data baru dan yang diubah berikut dalam spesifikasi formatnya. Spesifikasi format ini memengaruhi cara fungsi menginterpretasikan parameter input yang sesuai.

Spesifikasi format Jenis data untuk versi halaman kode Windows Jenis data untuk versi Unicode
c CHAR WCHAR
C WCHAR CHAR
hc, hC CHAR CHAR
hs, hS LPSTR LPSTR
Lc, LC WCHAR WCHAR
ls, lS LPWSTR LPWSTR
s LPSTR LPWSTR
S LPWSTR LPSTR

 

Jenis data untuk teks output selalu bergantung pada versi fungsi. Ketika jenis data parameter input dan jenis data teks output tidak setuju, fungsi cetak melakukan konversi dari Unicode ke halaman kode Windows saat ini, atau sebaliknya, sesuai kebutuhan.

Untuk versi Unicode dari fungsi cetak, string formatnya adalah Unicode, seperti halnya teks output.

Perhatian

Penanganan buffer yang buruk diimplikasikan dalam banyak masalah keamanan yang melibatkan buffer overruns. Lihat Referensi Strsafe.h. Fungsi yang ditentukan dalam Strsafe.h menyediakan pemrosesan tambahan untuk penanganan buffer yang tepat dalam kode Anda. Untuk alasan ini, mereka dimaksudkan untuk menggantikan rekan C/C++ bawaan mereka serta implementasi Microsoft Windows tertentu. Untuk informasi selengkapnya, lihat Pertimbangan Keamanan: Fitur Internasional.

 

Unicode di Windows API