Fungsi LCMapStringA (winnls.h)
Untuk lokal yang ditentukan oleh pengidentifikasi, memetakan satu string karakter input ke string karakter input lainnya menggunakan transformasi tertentu, atau menghasilkan kunci pengurutan untuk string input.
Sintaksis
int LCMapStringA(
[in] LCID Locale,
[in] DWORD dwMapFlags,
[in] LPCSTR lpSrcStr,
[in] int cchSrc,
[out, optional] LPSTR lpDestStr,
[in] int cchDest
);
Parameter
[in] Locale
pengidentifikasi lokal yang menentukan lokal. Anda dapat menggunakan makro
[in] dwMapFlags
Bendera yang menentukan jenis transformasi yang akan digunakan selama pemetaan string atau jenis kunci sortir yang akan dihasilkan. Untuk definisi terperinci, lihat parameter
[in] lpSrcStr
Penunjuk ke string sumber yang dipetakan atau digunakan fungsi untuk mengurutkan pembuatan kunci. String ini tidak boleh memiliki ukuran 0.
[in] cchSrc
Ukuran, dalam karakter, dari string sumber yang ditunjukkan oleh lpSrcStr. Ukuran string sumber dapat mencakup karakter null yang dihentikan, tetapi tidak harus. Jika karakter null yang mengakhiri disertakan, perilaku pemetaan fungsi tidak sangat terpengaruh karena karakter null yang mengakhiri dianggap tidak dapat diurutkan dan selalu memetakan ke dirinya sendiri.
Aplikasi dapat mengatur parameter ke nilai negatif apa pun untuk menentukan bahwa string sumber dihentikan null. Dalam hal ini, jika LCMapString digunakan dalam mode pemetaan stringnya, fungsi menghitung panjang string itu sendiri, dan mengakhiri string yang dipetakan yang ditunjukkan oleh lpDestStr.
Aplikasi tidak dapat mengatur parameter ini ke 0.
[out, optional] lpDestStr
Penunjuk ke buffer tempat fungsi ini mengambil string yang dipetakan atau kunci pengurutan.
Jika aplikasi menggunakan fungsi untuk menghasilkan kunci pengurutan (LCMAP_SORTKEY):
- Kunci sortir disimpan dalam buffer dan diperlakukan sebagai array byte buram. Nilai yang disimpan dapat mencakup 0 byte yang disematkan pada posisi apa pun.
- String tujuan dapat berisi jumlah byte ganjil. Bendera LCMAP_BYTEREV hanya membalikkan jumlah byte yang merata. Byte terakhir (berposisi ganjil) di kunci pengurutan tidak dibalik.
Jika penelepon secara eksplisit meminta subset string, string tujuan tidak menyertakan karakter null yang mengakhiri kecuali pemanggil menentukannya di cchDest.
Jika fungsi ini gagal, buffer tujuan mungkin berisi hasil parsial atau tidak ada hasil sama sekali. Dalam hal ini, semua hasil harus dianggap tidak valid.
Nota
Saat mengatur LCMAP_UPPERCASE atau LCMAP_LOWERCASE, string tujuan dapat menggunakan buffer yang sama dengan string sumber. Namun, ini sangat tidak disarankan, karena beberapa kondisi dapat menyebabkan string kasus yang dikembalikan menjadi panjang yang berbeda.
[in] cchDest
Ukuran, dalam karakter, dari string tujuan yang ditunjukkan oleh lpDestStr. Jika aplikasi menggunakan fungsi untuk pemetaan string, aplikasi menyediakan jumlah karakter untuk parameter ini. Jika spasi untuk karakter null yang mengakhiri disertakan dalam cchSrc, cchDest juga harus menyertakan spasi untuk karakter null yang dihentikan.
Jika aplikasi menggunakan fungsi untuk menghasilkan kunci pengurutan, aplikasi menyediakan jumlah byte untuk ukuran tersebut. Jumlah byte ini harus menyertakan ruang untuk kunci pengurutan 0x00 terminator.
Aplikasi dapat mengatur cchDest ke 0. Dalam hal ini, fungsi tidak menggunakan parameter lpDestStr dan mengembalikan ukuran buffer yang diperlukan untuk string yang dipetakan atau kunci pengurutan.
Mengembalikan nilai
Jika fungsi berhasil saat digunakan untuk pemetaan string, fungsi mengembalikan jumlah karakter dalam string yang diterjemahkan (lihat cchSrc dan cchDest untuk detail selengkapnya).
Jika fungsi berhasil saat digunakan untuk pemetaan string, fungsi mengembalikan jumlah byte dalam kunci pengurutan.
Fungsi ini mengembalikan 0 jika tidak berhasil. Untuk mendapatkan informasi kesalahan yang diperluas, aplikasi dapat memanggil GetLastError, yang dapat mengembalikan salah satu kode kesalahan berikut:
- ERROR_INSUFFICIENT_BUFFER. Ukuran buffer yang disediakan tidak cukup besar, atau salah diatur ke NULL.
- ERROR_INVALID_FLAGS. Nilai yang disediakan untuk bendera tidak valid.
- ERROR_INVALID_PARAMETER. Salah satu nilai parameter tidak valid.
- ERROR_INSUFFICIENT_BUFFER. Ukuran buffer yang disediakan tidak cukup besar, atau salah diatur ke NULL.
- ERROR_INVALID_FLAGS. Nilai yang disediakan untuk bendera tidak valid.
- ERROR_INVALID_PARAMETER. Salah satu nilai parameter tidak valid.
Komentar
Lihat Keterangan untukLCMapStringEx
Versi ANSI dari LCMapString memetakan string ke dan dari Unicode berdasarkan halaman kode Windows (ANSI) default yang terkait dengan lokal yang ditentukan. Ketika versi ANSI dari fungsi ini digunakan dengan lokal khusus Unicode, fungsi dapat berhasil karena sistem operasi menggunakan nilai CP_ACP, mewakili halaman kode WINDOWS ANSI default sistem. Namun, karakter yang tidak ditentukan di halaman kode sistem muncul dalam string sebagai tanda tanya (?).
Nota
Header winnls.h mendefinisikan LCMapString sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedur UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
server minimum yang didukung |
Windows 2000 Server [hanya aplikasi desktop] |
Platform Target |
Windows |
Header |
winnls.h (termasuk Windows.h) |
Pustaka |
Kernel32.lib |
DLL |
Kernel32.dll |
Lihat juga
FindNLSString
pengurutan Penanganan di Aplikasi Anda
Dukungan Bahasa Nasional
Fungsi Dukungan Bahasa Nasional