错误 C2665 “outtextxy”: 没有重载函数可以转换所有参数类型 or 错误 C2665“settextstyle ”: 没有重载函数可以转换所有参数类型
一、解决办法
方法一:字符串加上_T(“”) (自适应转换) 比较智能,可以根据实际情况自动判断转换
outtextxy(10, 10, _T("helloworld"));
1
方法二:字符串前加 L (强制转换)
outtextxy(10, 10, L"helloworld");
1
方法三:菜单栏—->项目—>属性—>高级—>字符集 把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。
觉得有用的小伙伴们点个赞吧
————————————————
版权声明:本文为优快云博主「怒码少年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/m0_74469506/article/details/131627375