如何调用 `qDebug` 而不附加空格和换行?

问题背景

在使用 C++/Qt 的打印函数 qDebug 时,有时候需要控制其默认添加的空格和换行。通过一个简单的例子来说明:

QString var1("some string");
int var2 = 1;
qDebug() << var1 << "=" << var2;

输出将会是:

"some string" = 1 

但如果不希望附加的 " 和空格以及换行符,比如希望输出如下:

some string=1 

该如何调用 qDebug 呢?

这里有几种解决方案。

方法一:使用 nospacenoquote

Qt 5.4 提供了 nospacenoquote 方法,可以避免空格和引号:

qDebug().nospace().noquote() << var1 << "=" << var2;

这将输出:

some string=1
方法二:使用 printf 格式

可以使用 qDebug 的 printf 格式化输入来避免多余的空格和引号:

qDebug("%s=%d", qUtf8Printable(var1), var2);

这将输出:

some string=1

注意:这里使用了 qUtf8Printable 来把 QString 转换为 const char*,以避免引号。

方法三:自定义消息处理器

可以通过自定义消息处理器来完全控制 qDebug 的输出,包括去除末尾的换行符:

void customHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) {fprintf(stderr, "%s", msg.toStdString().c_str());fflush(stderr);
}int main(int argc, char *argv[]) {qInstallMessageHandler(customHandler);// 测试输出QString var1("some string");int var2 = 1;qDebug().nospace().noquote() << var1 << "=" << var2;return 0;
}

这将输出:

some string=1
方法四:使用 qPrintable

另一种方法是使用 qPrintable 来避免 QString 引起的引号:

qDebug() << qPrintable(var1) << "=" << var2;

但这种方法仍然会附加换行符。

总结

通过上述方法,可以根据具体需求选择合适的方式调用 qDebug,避免附加空格和换行符。最推荐的方法是结合 nospacenoquote,因为它们提供了在 Qt 5.4 及以上版本中更为简洁和直接的解决方案。也可以通过自定义消息处理器来进一步控制输出格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/858163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报错:mAP数据为0%+无法读取output里的图片红色警告

debug检查&#xff1a;发现创建的output和input的路径不在同一级 操作1&#xff1a;修改output创建路径为绝对路径后&#xff0c;output和input文件成功在同一级&#xff0c;但问题仍存在 debug检测&#xff1a;识别的类别和保存的类别不同&#xff0c;没有保存数据 操作2&…

文件夹或文件已在另一程序中打开,找句柄发现是explorer.exe如何解决

1.找到句柄&#xff1a;ctrl alt del打开任务资源管理器 2.注意是选择CPU -> 关联的句柄&#xff0c;而不是概述 如果发现只有explorer.exe&#xff0c;那肯定是不对的&#xff0c;我们先shfit一个一个删除&#xff0c;发现哪个删不掉&#xff0c;再在这里找句柄&#xff0c…

用AI打败AI,利用ai指令对头条文章进行查重测试,结果出乎意料

前言&#xff1a;现在的ai真的太火爆了&#xff0c;让人不得不感叹ai的神奇之处&#xff0c;让我们一起来探讨下ai的强大之处吧&#xff01;本文仅限学习研究。 背景&#xff1a;最近看到很多人用ai写文章&#xff0c;然后被头条判定为疑似ai生成&#xff0c;所以想研究学习下…

NodeJs 使用中间件实现日志生成功能

写在前面 今天我们实现一个记录 nodejs 服务请求日志的功能&#xff0c;大概的功能包括请求拦截&#xff0c;将请求的信息作为日志文件的内容写入到 txt 文件中&#xff0c;然后输出到指定的日志到当天日期目录中&#xff0c;从而实现后续查找用户请求信息的功能&#xff0c;下…

【深度学习实战(40)】可变形卷积

一、可变形卷积&#xff08;DCN/DConv&#xff09; (a)是普通的卷积操作 (b)、©、(d)是可变形卷积&#xff08;deformable convolution&#xff0c;即DConv&#xff09; 可变形卷积实际是指标准卷积操作中采样位置增加了一个偏移量offset&#xff0c;这样卷积核就能在训…

在 Oracle Linux 8.9 上安装 FFmpeg 的完整指南

在 Oracle Linux 8.9 上安装 FFmpeg 的完整指南 在 Oracle Linux 8.9 上安装 FFmpeg 的完整指南准备工作安装步骤1. 更新系统2. 启用 EPEL 仓库3. 启用 RPM Fusion 仓库4. 安装 DNF 插件核心包5. 启用 CodeReady Builder 仓库6. 安装 FFmpeg7. 验证安装 可能遇到的问题注意事项…

原码、反码和补码详细集合

目录 一.什么是原码&#xff0c;反码&#xff0c;补码&#xff1f; 1&#xff09;.原码&#xff08;true form&#xff09;&#xff1a; 2&#xff09;.反码&#xff1a; 3&#xff09;.补码&#xff1a; 二.为什么要有原码&#xff0c;反码&#xff0c;补码 一.什么是原…

[rejected]master -> master (non-fast-forward)的解决方法

☆ 问题描述 [rejected]master -> master (non-fast-forward)的解决方法 本地已经创建了一个项目&#xff0c;想要把远程库的代码合并到本地库上&#xff0c;报错… ★ 解决方案 git pull <远程服务器> <远程分支> --allow-unrelated-histories 先使用这个代…

[最全]设计模式实战(总序)

最近一段时间,读完了《Android源码设计模式-解析与实战》和《大话设计模式》这两本经典设计模式相关书籍,撰写相关笔记。 每种设计模式将从以下方式聊聊: 1. 是什么(What,即定义);解决什么问题(Why,即使用场景) 2. 如何使用(How,即最简UML图+Java代码) 3. 生活…

npm 安装踩坑

1 网络正常&#xff0c;但是以前的老项目安装依赖一直卡住无法安装&#xff1f;哪怕切换成淘宝镜像 解决办法&#xff1a;切换成yarn (1) npm i yarn -g(2) yarn init(3) yarn install在安装的过程中发现&#xff1a; [2/4] Fetching packages... error marked11.1.0:…

企业供应链数字化转型如何做?让企业盈利能力增强再飞一会

引言&#xff1a;企业供应链数字化转型是外部环境变化、内部需求驱动、数字化转型的必要性和技术进步的推动共同作用的结果。供应链数字化转型可以通过数据整合、自动化、协同工作等方式提高供应链的效率和降低成本&#xff0c;例如&#xff0c;使用数字化技术可以实现快速采购…

Studying-代码随想录训练营day14| 226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

第十四天&#xff0c;(ง •_•)ง&#x1f4aa;&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 226.翻转二叉树 101.对称二叉树 100.相同的树 572.另一个树的子树 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 总结 226.翻转二叉树 文档讲…

【八】【QT开发应用】QTcreate项目打包成.exe文件或.apk文件,EnigmaVirtualBox软件下载,虚拟网站代打开QT应用

EnigmaVirtualBox下载 Enigma Virtual Box QTcreate项目打包成.exe可执行文件 找到自己写好的项目的.exe文件 将这个文件复制到一个新的文件夹里面 在这个新的文件夹里面打开cmd,这样可以使得cmd直接进入到该文件夹 打包.exe命令行 输入下面的命令行 windeployqt game…

一款基于WordPress开发的高颜值的自适应主题Puock

主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP优化策略 一键全站变灰 网页压缩成一行 后台防恶意登录 内置出色的SEO功能 评论Ajax加载 文章点赞、打赏 支持Twemoji集成 支持QQ登录 丰富的广告位 丰富的小工具 自动百度链接提交 众多页面模板 支持评论…

bazel :Output Directory Layout

Output Directory Layout This page covers requirements and layout for output directories. Requirements for an output directory layout: Doesn’t collide if multiple users are building on the same box.如果多个用户在同一个盒子上建造则不会发生冲突。 Support…

如何开发一个项目脚手架cli

目录 背景正文unbuildpromptsprogresskolorist 设置打包命令npm execnpxnpm init/ npm create/ npm innit 使用最后 背景 随着团队项目类型越来越多&#xff0c;方便后续快速去开发项目&#xff0c;会出现各种类型的项目模版项目。 这样开发只需要通过脚手架选择自己需要的项目…

Mybatis是如何进行分页的

MyBatis 也提供了支持分页的方案&#xff0c;其主要思路是使用 Limit 偏移量和限制个数&#xff0c;来获取指定数量的数据 MyBatis 提供两种分页方式&#xff1a;基于参数改造和基于插件拦截 1、基于参数改造&#xff1a; 第一种分页方式是基于参数改造的&#xff0c;通过添加…

示例:推荐一个自定义的Ribbon皮肤

一、目的&#xff1a;WPF自带的Ribbon控件功能很强大&#xff0c;但使用过程中感觉显示的样式不是很好&#xff0c;或者不适合自己的项目&#xff0c;下面介绍一个基于自带Ribbon控件样式的修改&#xff0c;主要修改了些高度&#xff0c;间距&#xff0c;背景色&#xff0c;前景…

【漏洞复现】AJ-Report开源数据大屏 verification;swagger-ui RCE漏洞

0x01 产品简介 AJ-Report是一个完全开源的B平台&#xff0c;酷炫大屏展示&#xff0c;能随时随地掌控业务动态&#xff0c;让每个决策都有数据支撑。多数据源支持&#xff0c;内置mysql、elasticsearch、kudu等多种驱动&#xff0c;支持自定义数据集省去数据接口开发&#xff…

Spring Cloud Ribbon 介绍

目录 一、Spring Cloud Ribbon简介二、Ribbon 负载均衡策略三、Ribbon 加载机制四、Ribbon的工作原理五、Ribbon的配置和使用六、Ribbon的作用和优势 一、Spring Cloud Ribbon简介 Spring Cloud Ribbon是一个基于Netflix Ribbon实现的客户端负载均衡器。它运行在消费者端&…