即使你不打算立即使用Unicode,最好也應(yīng)該著手將你的應(yīng)用程序轉(zhuǎn)換成符合Unicode 的應(yīng)用程序。下面是應(yīng)該遵循的一些基本原則:
• 將文本串視為字符數(shù)組,而不是chars 數(shù)組或字節(jié)數(shù)組。
• 將通用數(shù)據(jù)類型(如TCHAR和PTSTR)用于文本字符和字符串。
• 將顯式數(shù)據(jù)類型(如BYTE和PBYTE)用于字節(jié)、字節(jié)指針和數(shù)據(jù)緩存。
• 將TEXT宏用于原義字符和字符串。
• 執(zhí)行全局性替換(例如用PTSTR替換PSTR)。
• 修改字符串運(yùn)算問(wèn)題。例如函數(shù)通常希望你在字符中傳遞一個(gè)緩存的大小,而不是字節(jié)。
這意味著你不應(yīng)該傳遞sizeof(szBuffer),而應(yīng)該傳遞(sizeof(szBuffer)/sizeof(TCHAR)。另外,如果需要為字符串分配一個(gè)內(nèi)存塊,并且擁有該字符串中的字符數(shù)目,那么請(qǐng)記住要按字節(jié)來(lái)分配內(nèi)存。這就是說(shuō),應(yīng)該調(diào)用malloc(nCharacters *sizeof(TCHAR)),而不是調(diào)用malloc(nCharacters)。在上面所說(shuō)的所有原則中,這是最難記住的一條原則,如果操作錯(cuò)誤,編譯器將不發(fā)出任何警告。
• 使用可以擴(kuò)展的函數(shù)
lstrcat 將一個(gè)字符串置于另一個(gè)字符串的結(jié)尾處
lstrcmp 對(duì)兩個(gè)字符串進(jìn)行區(qū)分大小寫(xiě)的比較 對(duì)Windows函數(shù)CompareString的調(diào)用來(lái)實(shí)現(xiàn)的。
lstrcmpi 對(duì)兩個(gè)字符串進(jìn)行不區(qū)分大小寫(xiě)的比較 對(duì)Windows函數(shù)CompareString的調(diào)用來(lái)實(shí)現(xiàn)的。
lstrcpy 將一個(gè)字符串拷貝到內(nèi)存中的另一個(gè)位置
lstrlen 返回字符串的長(zhǎng)度(按字符數(shù)來(lái)計(jì)量)
• 使用可以擴(kuò)展的字符串類tstring
tstring str = _T("abc");
這么做就可以直接用UNICODE宏 來(lái)控制了,而不用去修改代碼了。
轉(zhuǎn)自(http://www.shnenglu.com/Vcer-JZ/archive/2011/08/13/153246.html)