错误 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。

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

你可能感兴趣的:(EasyX,c++,开发语言,图形渲染,c语言,windows)