避免在 qDebug() 中换行
Avoid newline in qDebug()
有时我想在qDebug()
中输出一行,但带有一些条件文本,例如
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
但是,这将在 2 个单独的行上输出它们。
有没有办法避免在每次qDebug()
后附加新行?
我刚刚找到了一个似乎有效的解决方案。读取文档 qDebug() 会返回一个临时的 QDebug 对象,该对象在销毁时附加换行符。似乎这个临时对象可以存储在临时变量中:
QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
您可以使用三元运算符。
qDebug() << (fontMetricsLeading < 0 ? "!!!" : "") << fontMetricsLeading;
另一种方法是在这样的QString
中构建队列。
QString debugString;
if(fontMetricsLeading < 0)
debugString += "!!!";
debugString += QString::number(fontMetricsLeading);
qDebug() << debugString;
虽然我不明白如果只是出于调试目的,为什么你需要达到这个程度。
处理您的情况的另一种方法。
QString msg;
if ( fontMetricsLeading < 0 )
{
msg = "!!!";
}
qDebug( "%s, %d", qPrintable( msg ), fontMetricsLeading );
相关文章:
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何防止clang格式在流运算符调用之间添加换行符<<
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 在 Stream C++ 文本之前有一个额外的换行符
- 流:CSV 文件中的换行符
- 将缓冲区复制到剪贴板 [换行错误]
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- Clang-格式:在多行语句之后的换行符上打开大括号
- 如何正确转发/换行static_cast?
- 在输出流中插入换行符
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- QProcess::readAllStandardOutput() 和换行符
- 如果有换行符,clang 格式不会附加大括号
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- C++在标点符号后将字符串换行
- 提取后返回换行符的C++istream.get()
- 如何在出现换行符之前将多个整数作为输入?
- 正则表达式 获取两个换行符之间的文本
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 避免在 qDebug() 中换行