VS C++部分基础但繁琐问题的解决方法(UTF-8、第三方库配置)

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

使用C++一年多,在windows下淌过不少水,有些基础、常见但繁琐的东西,有一些简单的处理方法,在此抛砖引玉,涉及UTF-8编码、第三方库配置。以下配置或代码均在VS2022上使用,其他版本略有异同。

目录

一、文件默认保存为UTF-8

二、UTF-8编码的源文件在编译时出警告或错误,“该文件包含不能在当前代码页(936)中表示的字符”“常量中有换行符”等的解决方法

三、UTF-8编码字符串在文件打开失败、控制台输出乱码的解决方法

四、UTF-8与GBK或其它ANSI编码互转的跨平台方法

五、使用项目属性表简化第三方库配置

六、屏蔽windows头文件中的min、max宏

七、对常用配置和代码使用项目模板简化操作

八、项目中引用共享项目或库项目简化操作


一、文件默认保存为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,可以在开头设置本地全局环境。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值