首先我们探讨几个问题:
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 阅读(2812)
评论(3) 编辑 收藏 引用 所属分类:
NScript