温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

VS 项目工程字符集选择

发布时间:2020-08-04 10:51:24 来源:网络 阅读:579 作者:fengyuzaitu 栏目:编程语言

前沿

            1)为了保证跨平台,尽量少用C++标准IO库,尽可能使用兼容性非常好的C标准库
            2)为了引用其他的基础C库,采用ANSI比采用Unicode字符集好一些


控制台中文乱码问题

                窄字符串使用std::cout输出,宽字符串使用std::wcout输出。std::cout输出宽字符串的时候,不仅仅中文会产生乱码,并且会导致控制台打印阻塞,尽管程序正常运行,但是打印就此中断正确的打印方式是将宽字符串转换成窄字符串,然后再打印。采用printf输出宽字符串,对于中文输出同样是乱码,但是不会阻塞。


了解string与wstring

                字符数组可以表示一个字符串,但它是一个定长的字符串,我们在使用之前必须知道这个数组的长度。为方便字符串的操作,STL为我们定义好了字符串的类string和wstring。大家对string肯定不陌生,但wstring可能就用的少了。string是普通的多字节版本,是基于char的,对char数组进行的一种封装。wstring是Unicode版本,是基于wchar_t的,对wchar_t数组进行的一种封装。


进展

            目前接收到utf8编码的字符串,保存在string字符串中,如果不经过utf8转换成GBK编码是无法正常显示的。std::wcout << str.c_str()<<endl;这种方法是错误的,即使设置了控制台的编码字符集chcp 65001


提供控制台编码字符串的命令
chcp 65001  就是换成UTF-8代码页
chcp 936 可以换回默认的GBK
chcp 437 是美国英语


问题

1)错误 C2679 二进制“<<”: 没有找到接受“const std::string”类型的右操作数的运算符(或没有可接受的转换)

严重性 代码 说明 项目 文件 禁止显示状态

错误 C2664 “void OutputDebugStringW(LPCWSTR)”: 无法将参数 1 从“char [256]”转换为“LPCWSTR”

说明当前采用的是unicode编码,跟其他工程选择的编码方式不一致

解决:点击项目属性,打开配置属性界面,常规中选择字符集多字节编码



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI