You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多行空格分隔文本赋值给Qt QString变量且不修改原文本?

解决多行QString赋值的编译错误

你遇到的问题是因为C++标准中,普通双引号包裹的字符串字面量不能直接跨多行书写,编译器无法识别换行后的内容属于同一个字符串,因此抛出“missing terminating character "”错误。以下是两种不修改原文本内容(仅调整代码的字符串声明方式)的解决方法:

方法1:使用C++11原始字符串字面量(推荐)

原始字符串字面量可以直接保留文本的所有格式(换行、空格、制表符等),不需要对原文本做任何修改,只需用R"DELIM(...)DELIM"包裹原文本即可,其中DELIM是自定义分隔符(只要原文本中不出现)DELIM这个组合即可):

QString Commands = R"DELIM(
        list        List available controllers
        show        Controller information
        select      Select default controller
        devices     List available devices
          )DELIM";

这种方式完全保留你提供的原文本格式,编译器会正确识别整个多行内容为一个字符串。

方法2:多行字符串拼接(兼容旧C++标准)

如果你的环境不支持C11,可以将每一行文本单独用双引号包裹,利用C编译器自动拼接相邻字符串字面量的特性来实现。注意这里仅给每一行添加引号和换行符(\n),原文本的单词、空格内容完全未修改:

QString Commands =
        "        list        List available controllers\n"
        "        show        Controller information\n"
        "        select      Select default controller\n"
        "        devices     List available devices\n"
        "          ";

这样编译器会把这些相邻的字符串自动拼接成一个完整的QString,同时\n会保留原文本的换行结构。

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:02:41