Windows编程中如何解决字符不匹配问题

在初学Windows编程的时候,再写第一个程序时,由于参考的书是VC6.0写的,而我的测试环境是VS2013,因此在写MessageBox()函数时候输入参数过程中出现了问题,明明参数没有问题但是还会报错。因此去上网查了一下,发现是字符不匹配问题,VC6.0默认的是ANSI编码方式,而我们经常使用的VS则是用Unicode编码方式,因此就会出现问题。
解决方法有很多,下面就列举一些:
解决方法一:
通常手动输入的字符串都是const char*(即LPCSTR)类型的,因此只需将该句中的MessageBox改为MessageBoxA即可。
解决方法二:
参数使用“_T”宏:
MessageBox(NULL,_T("Open image failed!"),_T("error"),MB_OK);
或是:
MessageBox(NULL, L"Openimage failed!", L"error",MB_OK);
/*
************************************************************************************************************************************************
* 当工程是Unicode编码时,_T将括号内的字符串以Unicode方式保存;当工程是多字节编码时,_T将括号内的字符串以ANSI方式保存
* 关键字“L”,则是不管编码环境是什么,都是将其后面的字符串以Unicode方式保存。
*************************************************************************************************************************************************
*/
1、用THCAR代替char
2、字符串加_T(""),如_T("你好")
3、用_tcscpy等代替strcpy等
ANSI操作函数以str开头,如strcpy(),strcat(),strlen();
Unicode操作函数以wcs开头,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode互为兼容的操作函数以_tcs开头 _tcscpy(C运行期库);
ANSI/Unicode互为兼容的操作函数以lstr开头 lstrcpy(Windows函数);
考虑ANSI和Unicode的兼容,需要使用以_tcs开头或lstr开头的通用字符串操作函数。

最后加上头文件 #include <tchar.h>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值