Qt记录:Qt编程遇C2001错误,提示“常量中有换行符”

在新电脑做一个简单的Qt项目时,在debug输出的时候,出现了C2001错误,提示“常量中有换行符”,

比如

ui->pBtnStart->setText(tr("开始监测"));

就会出现常量中有换行符,肉眼确实没看出来......

但是

ui->pBtnStart->setText(tr("停止监测"));

却可以顺利通过编译,试了很久改了编码也不行,即便编译通过界面显示却会乱码。

最后通过网上百度,找到了3种解决方式:

1、将字符中的中文字符用英文字母或单词代替,这样解决的好处是代码规范,语言统一,缺点就是没有中文表达那样直接、

清晰。(如果是这样我就不会去用中文了!!!)

2、使用中文字符常量时,用QStringLiteral修饰中文字符,格式如QStringLiteral("中文字符"),这种方法必须在每次使用中

文字符时都需要进行修饰,否则还是会出现错误,所以比较麻烦。

3、直接在头文件声明处添加

#pragma execution_character_set("utf-8");

,直接解决此错误。

我采用了第3种方法,其步骤如下:

1、QT界面菜单栏->工具->选项->文本编辑器,修改成如果编码是UTF-8则添加,如图:

2、QT界面菜单栏->编辑->Slect Encoding...->UTF-8->按编码保存<

<think>嗯,用户在使用QTMSVC2019编译器时到了error C2001提示常量中有换行符。虽然用户说没有错误,但编译器报错了。首先,我需要回想一下这个错误的常见原因。C2001通常是因为字符串常量中有多行内容,或者宏定义中的换行符处理不当。 可能的情况包括:用户可能在代码中使用了多行字符串字面量,但没有正确拼接。例如,在C++中,如果字符串被分成多行,需要用反斜杠来连接。或者可能是宏定义中使用了换行符,但没有正确使用反斜杠导致预处理出错。 另外,可能是在某个常量字符串里不小心包含了换行符,比如在用户界面的文本中,或者从其他地方复制代码时带入了不可见字符。还有可能是文件编码问题,特别是如果文件保存为带有BOM的UTF-8,有时候会导致编译器解析错误。 我应该建议用户检查所有字符串常量,尤其是那些跨越多行的,确保使用了正确的转义。另外,检查宏定义中的换行符是否正确处理,使用反斜杠。同时,查看文件编码是否为UTF-8无BOM,或者尝试转换编码。还有可能是在资源文件或UI文件中存在格式问题,需要检查.qrc或.ui文件是否有异常。 此外,可能需要提醒用户使用#pragma execution_character_set("utf-8")来指定字符集,或者检查项目设置中的字符编码配置。如果用户最近修改了代码,可能需要查看版本控制的历史记录,找出改动的部分。另外,清理项目并重新构建,或者重启Qt Creator也可能有帮助。</think>出现`error C2001: 常量中有换行符`通常与字符串常量或宏定义中的换行处理有关,可能原因及解决方案如下: 1. **多行字符串未正确拼接** - 若需定义多行字符串,应使用反斜杠`\`连接: ```cpp const char* text = "第一行内容\ 第二行内容"; ``` 或使用原生字符串字面量(C++11起): ```cpp const char* text = R"(第一行内容 第二行内容)"; ``` 2. **宏定义中的换行符未转义** - 宏定义结尾需用`\`显式换行: ```cpp #define MY_MACRO(x) do { \ std::cout << x; \ } while(0) ``` 3. **隐藏的非法换行符** - 检查字符串中是否意外粘贴了不可见换行符(如从文档复制代码时)。可用十六进制编辑器查看文件,或尝试重新输入字符串内容。 4. **文件编码问题** - 若文件含中文或特殊符号,保存时应选择**UTF-8无BOM**编码。在Qt Creator中:`文件` → `另存为` → 选择编码为`UTF-8`。 5. **资源文件或UI文件异常** - 若错误出现在`.qrc`或`.ui`文件中,检查其中的文本是否包含未转义的换行符或特殊字符。 6. **添加字符集声明** - 在源文件顶部添加: ```cpp #pragma execution_character_set("utf-8") ``` **操作建议**: - 使用`Ctrl+Shift+F`全局搜索所有字符串常量,检查是否有未转义的换行。 - 清理项目(`构建` → `清理`)并重新编译,排除缓存干扰。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值