错误 C2665 “outtextxy”: 没有重载函数可以转换所有参数类型 or 错误 C2665“settextstyle ”: 没有重载函数可以转换所有参数类型

错误 C2665 “outtextxy”: 没有重载函数可以转换所有参数类型 or 错误 C2665“settextstyle ”: 没有重载函数可以转换所有参数类型

一、解决办法

方法一:字符串加上_T(“”) (自适应转换) 比较智能,可以根据实际情况自动判断转换

	outtextxy(10, 10, _T("helloworld"));

方法二:字符串前加 L (强制转换)

outtextxy(10, 10, L"helloworld");

方法三:菜单栏—->项目—>属性—>高级—>字符集 把UNICODE改为多字节字符集

二、出错原因

字符编码问题引起的。

vc++6.0默认使用的时MBCS 编码,而vs2019、vs2022默认使用的是Unicode 编码。

MBCS 编码(Multi-Byte Chactacter System(Set))——多字节字符系统或者字符集,基于ANSI编码的原理,计算机在存储的时候,采用多字节存储的形式。相当于按需分配。一个汉字分配两个字节。

用 char 表示字符时,英文占一个字节,中文占两个字节。问:如果有两个连续字节,究竟是两个英文字符,还是一个中文字符?为了解决这个问题,Unicode 编码诞生了。Unicode 编码不管中文英文都用两个字节表示。

Unicode(又称统一码、万国码、单一码),简单来说就是一个包含全世界所有文字、符号的一个编码表,因此其不存在令人揪心的冲突问题。

对于 MBCS 编码,字符变量用 char 定义。对于 Unicode 编码中,字符变量用 wchar_t 定义。

为了提高代码的自适应性,微软在 tchar.h 里面定义了 TCHAR,而 TCHAR 会根据项目定义的编码,自动展开为 char 或 wchar_t。

觉得有用的小伙伴们点个赞吧

  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值