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