Qt Creator编译,存在中文导致错误: error: C2001: 常量中有换行符

文章讲述在运行别人的Qt程序时,因文件中存在中文且编码格式不对,编译报错。给出三种解决方法:一是程序全用英文;二是在qtCreator里将文件编码转换为GBK;三是使用偶数个中文或奇数个中文后加英文点,此方法适合改文字数少的情况。

文章目录

    问题简述
    解决方法1:不使用英文
    解决方案2:改变文件编码
    解决方案3:使用偶数个中文或者奇数个中文最后加一个英文的点"."

问题简述

今天在跑别人的Qt程序时遇到了问题,编译时报了如下这些错误:

1	error: C2001: 常量中有换行符
2	error: C2062: 意外的类型“bool”
3	error: C2065: “flag”: 未声明的标识符
4	error: C2143: 语法错误: 缺少“)”(在“return”的前面)
5	error: C2143: 语法错误: 缺少“;”(在“return”的前面)
6	error: C2065: “temp”: 未声明的标识符
7	error: C3867: “QDialog::result”: 非标准语法;请使用 "&" 来创建指向成员的指针
8	error: C2059: 语法错误:“}”
9	error: C1071: 在注释中遇到意外的文件结束

造成这些错误的原因是因为文件中存在中文,但编码格式不对

解决方法1:不使用英文

都0202年了,程序里应该全是英文,注释也换成英文

解决方案2:改变文件编码

qtCreator 编辑->选择编码

在这里插入图片描述

->SYSTEM ->按编码保存

在这里插入图片描述

这个问题的原因是因为Windows默认的GBK编码和UTF-8编码的冲突造成的,转换文件为GBK编码就行了。
在这里插入图片描述

解决方案3:使用偶数个中文或者奇数个中文最后加一个英文的点"."

这个奇妙的解决方法可以奏效,如果有大佬知道这个的原理,请告诉我。
这个解决方案适合于需要更改的文字数较少的情况。

参考资料:

Visual Studio error C2001:常量中有换行符错误解决办法

Qt5 开发环境中使用中文字符串时,可能会遇到编译错误 `error C2001: 常量中有换行符`。这种问题通常与源文件的编码格式有关,特别是在使用 MSVC 编译器(如 MSVC 2017)时更为常见。以下是几种有效的解决方法: ### 1. 设置文件保存为 UTF-8 with BOM 编码 Qt 默认使用 UTF-8 编码处理字符串,而 Windows 系统下的 MSVC 编译器默认使用本地编码(如 GBK 或 GB2312)。如果源文件保存为无 BOM 的 UTF-8 编码,MSVC 可能无法正确识别中文字符,从而导致 `error C2001`。 解决方法是: - 在 Qt Creator 中,点击 **工具(Tools)** -> **选项(Options)** -> **文本编辑器(Text Editor)** -> **行为(Behavior)**; - 在“文件编码(File Encoding)”一栏中将默认编码设置为 **UTF-8 with BOM(If encoding is UTF-8, add BOM)**; - 保存文件并重新编译,可有效解决该问题[^1]。 ### 2. 使用 `QStringLiteral` 包裹中文字符串 Qt 提供了宏 `QStringLiteral`,用于在编译时将字符串字面量直接转换为 `QString`,并避免运行时转换带来的性能损耗。同时,该宏也能有效处理 UTF-8 编码的中文字符串,避免编译器误判换行符。 例如: ```cpp QString Qstr_ExtentedPrintValue = QStringLiteral("黄"); ``` 使用 `QStringLiteral` 可确保字符串在编译阶段被正确解析,避免因编码问题导致的 `error C2001`[^1]。 ### 3. 使用记事本重新保存文件并调整编码 如果文件中仅有个别中文字符报错,可以尝试以下步骤: - 用记事本打开源文件; - 选择 **另存为**,在保存对话框中选择编码为 **UTF-8**; - 保存后重新在 Qt Creator 中打开并编译; - 若中文仍显示乱码,再将中文字符串用 `QStringLiteral` 包裹即可[^2]。 ### 4. 使用 `#pragma execution_character_set("utf-8")` 指令 在源文件顶部添加以下预处理指令,可以强制 MSVC 使用 UTF-8 编码处理字符串常量: ```cpp #pragma execution_character_set("utf-8") ``` 该指令会告诉编译器将源文件中的字符常量视为 UTF-8 编码,从而避免因编码识别错误导致的 `error C2001`[^3]。 ### 5. 配置 Visual Studio 的默认编码为 UTF-8(如使用 VS 作为开发环境) 如果使用的是 Visual Studio 作为开发环境,可以通过以下方式设置默认编码为 UTF-8: - 安装插件 **Force UTF-8 (No BOM)**; - 或者通过“高级保存选项”将文件保存为 **Unicode (UTF-8 with signature) - 代码页 65001** 编码格式[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值