CString s1 = TEXT("壁灯Test");
int ret = s1.Compare(TEXT("低压灯安全隔离变压器Test"));上面的代码,在VC 6中ret值为-1,这没有问题,但是在VC 2005中返回值居然是1?
VC 6用的是多字节字符集,VC 2005用了Unicode。
是什么原因呢?请指教,谢谢!
int ret = s1.Compare(TEXT("低压灯安全隔离变压器Test"));上面的代码,在VC 6中ret值为-1,这没有问题,但是在VC 2005中返回值居然是1?
VC 6用的是多字节字符集,VC 2005用了Unicode。
是什么原因呢?请指教,谢谢!
解决方案 »
- 用D3D来做界面,怎么弹出对话框?怎么用纹理贴对话框?对话框的消息怎么处理?
- 获取进程路径问题。
- CTreeCtrl中消息响应捕获不了节点的文本!!!
- MFC时间问题
- 为什么我双击CListCtrl时总是从NM_LISTVIEW的结构里的到的 iItem总是-1?
- 如何在MFC扩展DLL中导出CFromView派生类,在EXE程序中又如何使用它?
- VC中使用__asm的问题
- 请问出现LINK : fatal error LNK1561: entry point must be defined怎么回事?
- 怎么将一个DWORD型的变量转化为CString型的变量?
- VC wifi输入密码无法加入网络,无密码的可以!各位大侠帮帮忙!
- 急需vc设计类似迅雷浮动图标代码
- 求教关于文件同步的方法
低压:E4BD8EE58E8BE4比DA大。
但是,如果我想在VC 2005中得到和VC 6中同样的结果,应该如何处理呢?
毕竟,从拼音排序来说,VC 6的结果是正确的。
刚才没贴全,
UNICODE下,
壁灯是:E5A381E781AF
低压是:E4BD8EE58E8B
ANSI下,
壁灯是:B1DAB5C6
低压是:B5CDD1B9字符串一般就是比较相等吧。要想结果一致,就需要两个编译器的字符集相同。VC2005可以设置多字节字符的。
实在不行,就转一下字符集。
CompareStringOrdinal()比如两个Unicode的字符串
低压:E4BD8EE58E8BE4比DA大。
四楼的数据才对,但奇怪的是,竟然ansi和unicode下真的相反:)
如果确定要得到-1的结果,只能转成ansi后进行比较了。
最后解决方案是转换到多字节字符集(char*)来比较。
结贴。