首先我們探討幾個(gè)問題:
CString str = L"";
str += 'a' + L"a";
或str += L"a" + 'a';
分別會(huì)得到什么?
答案是一堆一樣的亂碼.
這是為什么呢?
由于運(yùn)算符的優(yōu)先級(jí)的關(guān)系先計(jì)算'a' + L"a"或L"a" + 'a'當(dāng)字符串與單個(gè)字符相加時(shí)編譯器認(rèn)為是將指針向后移動(dòng)'a'(0x61)個(gè)字節(jié),最后進(jìn)入CString的+=運(yùn)算符重載函數(shù),由于傳入的是一個(gè)字符串指針?biāo)院瘮?shù)會(huì)將從L"a"+0x61的位置開始到\0結(jié)尾的所有字符連接到原字符后.應(yīng)此也就出現(xiàn)了亂碼的情況.
解決方法:
CString str = L"";
str += CString('a') + L"a";
或str += CString(L"a") + 'a';
在做加法運(yùn)算時(shí)都會(huì)進(jìn)入CString的+運(yùn)算符的重載函數(shù)以得到正確的結(jié)果.
posted on 2010-07-11 18:38
lwch 閱讀(2826)
評論(3) 編輯 收藏 引用 所屬分類:
NScript