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