Perbedaan Fungsi String
Topik ini menjelaskan perbedaan antara fungsi string yang digunakan dalam menangani unicode dan informasi kumpulan karakter. Fungsi-fungsi ini memiliki Unicode dan halaman kode Windows implementasi 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.
- CharNext
- CharPrev
- StringCchCat, StringCchCatEx
- StringCchCopy, StringCchCopyEx
- StrCbLength, StrCchLength
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 "hitungan 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. Fungsilstrcmp danlstrcmpi tidak melakukan perbandingan byte seperti namesakes ANSI mereka, misalnya, strcmp. Sebaliknya, mereka membandingkan string sesuai dengan aturan lokal.
- CharLower
- CharLowerBuff
- CharUpper
- CharUpperBuff
- lstrcmp
- lstrcmpi
Fungsi berikut mengonversi antara set 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.
Hati
Penanganan buffer yang buruk diimplikasi dalam banyak masalah keamanan yang melibatkan overruns buffer. Lihat ReferensiStrsafe.h . Fungsi yang ditentukan dalam Strsafe.h menyediakan pemrosesan tambahan untuk penanganan buffer yang tepat dalam kode Anda. Untuk alasan ini, mereka dimaksudkan untuk mengganti rekan C/C++ bawaan mereka serta implementasi Microsoft Windows tertentu. Untuk informasi selengkapnya, lihat Pertimbangan Keamanan : Fitur Internasional.
Topik terkait