Windows程式設計--寬位元組和多位元組
阿新 • • 發佈:2019-01-02
多位元組字符集:
每個字元的編碼寬度都不等,可以是一個位元組,也可以是多個位元組。1)ASCII字元只佔用一個位元組;
2)對於中文、日文等象形文字,一個字元佔用兩個位元組。
sizeof("12你好"); //7. \0算上
strlen("12你好"); //6
缺點:每次查詢,都需要從頭到尾掃描,以確定字元,效率低。
有點:節省記憶體。
寬位元組字符集:
每個字元的編碼寬度都相等,均是兩個位元組。1)ASCII字元佔用擴充為兩個位元組,在原先的位元組前補充一個位元組0x00 ;
2)結束符為兩個\0 ;
3)字串的解釋都是以兩個字元為單位進行解釋,所以查詢速度快。
sizeof("12你好"); //10. \0算上 wcslen("12你好"); //8
缺點:記憶體佔用偏大
優點:查詢速度快
相容多位元組和寬位元組字符集:
#ifdef _UNICODE
#define _tcslen wcslen
#define TCHAR wchar_t
#define LPTSTR wchar_t*
#define _T(x) L##x
#else
#define _tcslen strlen
#define TCHAR char
#define LPTSTR char*
#define _T(x) x
#endif
小技巧:所有以前以str開頭的字串函式,在通用字元型別中str被替換為_tcs,在寬位元組字元中str被替換為wcs