如何将多行空格分隔文本赋值给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
相关产品推荐
相关产品推荐

