Jenis Data Windows untuk String

Sebagian besar operasi string dapat menggunakan logika yang sama untuk unicode dan untuk halaman kode Windows. Satu-satunya perbedaan adalah bahwa unit operasi dasar adalah karakter 16-bit (juga dikenal sebagai karakter lebar) untuk Unicode dan karakter 8-bit untuk halaman kode Windows. File header Windows menyediakan beberapa definisi jenis yang memudahkan untuk membuat sumber yang dapat dikompilasi untuk Unicode atau untuk halaman kode Windows.

Windows mendukung tiga set jenis data karakter dan string: sekumpulan definisi jenis generik yang dapat dikompilasi untuk halaman kode Unicode atau Windows, dan dua set definisi jenis tertentu. Satu set definisi jenis tertentu adalah untuk digunakan dengan Unicode, dan yang lainnya adalah untuk digunakan dengan halaman kode Windows.

Aplikasi yang menggunakan jenis data generik dapat dikompilasi untuk Unicode hanya dengan mendefinisikan "UNICODE" sebelum pernyataan #include untuk file header, atau selama kompilasi. Aplikasi Windows baru harus menggunakan Unicode untuk menghindari inkonsistensi halaman kode yang bervariasi dan untuk menyederhanakan pelokalan. Mereka harus ditulis dengan jenis data generik, dan harus mendefinisikan "UNICODE" untuk mengkompilasi jenis-jenis ini ke dalam jenis Unicode. Di beberapa tempat di mana aplikasi harus bekerja dengan data karakter 8-bit, aplikasi dapat menggunakan jenis secara eksplisit untuk halaman kode Windows.

Kemampuan untuk mengkompilasi jenis generik ke dalam jenis untuk halaman kode Windows ada terutama untuk mendukung aplikasi warisan. Untuk mengkompilasi halaman kode Windows, aplikasi hanya menghilangkan definisi UNICODE.

Contoh berikut menunjukkan metode yang digunakan dalam file header Windows untuk menentukan tiga set jenis data. Untuk implementasinya, lihat file header Winnt.h.

// Generic types

#ifdef UNICODE
    typedef wchar_t TCHAR;
#else
    typedef unsigned char TCHAR;
#endif

typedef TCHAR *LPTSTR, *LPTCH;

// 8-bit character specific

typedef unsigned char CHAR;
typedef CHAR *LPSTR, *LPCH;

// Unicode specific (wide characters)

typedef unsigned wchar_t WCHAR;
typedef WCHAR *LPWSTR, *LPWCH;

Huruf "T" dalam definisi jenis, misalnya, TCHAR atau LPTSTR, menunjuk jenis generik yang dapat dikompilasi untuk halaman kode Windows atau Unicode. Huruf "W" dalam definisi jenis, misalnya, WCHAR atau LPWSTR, menunjuk jenis Unicode. Karena halaman kode Windows memiliki bentuk yang lebih lama, halaman tersebut memiliki definisi jenis sederhana, seperti CHAR dan LPSTR. Untuk deskripsi lengkap jenis data di Windows, lihat Jenis Data Windows.

Unicode di Windows API