使用C++一年多,在windows下淌过不少水,有些基础、常见但繁琐的东西,有一些简单的处理方法,在此抛砖引玉,涉及UTF-8编码、第三方库配置。以下配置或代码均在VS2022上使用,其他版本略有异同。
目录
二、UTF-8编码的源文件在编译时出警告或错误,“该文件包含不能在当前代码页(936)中表示的字符”“常量中有换行符”等的解决方法
三、UTF-8编码字符串在文件打开失败、控制台输出乱码的解决方法
一、文件默认保存为UTF-8
需要保存为UTF-8的原因不做赘述,网络上常见的方法有:
1. “高级保存选项”保存为UTF-8,但仅针对单文件,略繁琐;
2. 通过VSCode或Notepad等编辑器保存为UTF-8,操作多文件比方法1略简单;
3. 使用插件“Force UTF-8(No BOM)”等,保存简单,但影响调试;
4. 使用.editconfig文件,放置在源代码目录、项目目录、项目的上级目录都可以,VS保存新文件时会自动查找其各上级目录中是否有.editconfig文件,按照设置保存,但对手动进行过对应设置的不生效。
若需要新项目文件自动保存为UTF-8,只建议使用方法4,以下为本人的.editconfig配置:
root = true
[*]
# 文件字符集编码方式 [latinl, utf-8, utf-8-bom, utf-16be, utf-16le]
charset = utf-8
# 行尾文件格式 [lf, cr, crlf]
end_of_line = crlf
# 文件是否应以换行符结尾 [true, false]
insert_final_newline = true
[**.{c,h,cc,cxx,cpp}]
# 是否从行尾删除空格 [true, false]
trim_trailing_whitespace = true
# 缩进样式 [tab, space]
indent_style = space
# 缩进大小 [tab, 整数]
indent_size = 2
# 单个制表位字符的宽度 [正整数]
table_width = 2
二、UTF-8编码的源文件在编译时出警告或错误,“该文件包含不能在当前代码页(936)中表示的字符”“常量中有换行符”等的解决方法
这种警告或错误均为VS对UTF-8 withot BOM的代码页支持不完全,在项目属性→C/C++→命令行→其它选项中,填入“/utf-8”,如下图所示:

若本来就有这个选项,仍然出现警告报错,请尝试检查文件代码页、去掉/utf-8后面的空格再保存一次。
三、UTF-8编码字符串在文件打开失败、控制台输出乱码的解决方法
网络上常见方法有:
1. 修改系统本地代码页;
2. 使用“chcp”命令修改控制台代码页;
以上方法均不建议,会带来许多其它问题,C/C++本身有本地化库locale.h、clocale、locale,可以在开头设置本地全局环境。

本文介绍了在VS C++开发中遇到的一些基础但繁琐的问题及其解决方法,包括文件默认保存为UTF-8,处理UTF-8编码的源文件编译警告,字符串乱码问题,UTF-8与GBK编码转换,第三方库配置简化,屏蔽min/max宏,使用项目模板以及引用共享项目等。提供了解决这些问题的具体步骤和配置示例。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



