如何在没有附加空格和换行符的情况下调用 qDebug?

新手上路,请多包涵

我正在使用 C++/Qt 打印函数 qDebug,但有时我想控制如何添加 “、空格和换行符,而不是使用默认的 qDebug。

我们举一个简单的例子:

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

这将打印

"some string" = 1

但是假设我不喜欢附加的 ” 和空格,并且希望打印看起来像

some string=1

然后我如何调用 qDebug?


注意: qDebug 中有一个 名为 nospace 的函数,但它会删除空格。但是“”仍然存在。

如果我使用这个:

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

我得到:

 "some string"=1

但请注意,我仍然没有找到摆脱结尾换行符的方法。

/谢谢

原文由 Johan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

试试这个格式: qDebug("%s=%d", "string", 1); 在这种情况下 qDebug 使用 printf 格式

PS适用于您的示例: qDebug("%s=%d", var1.toStdString().c_str(), var2);

原文由 Johnny 发布,翻译遵循 CC BY-SA 3.0 许可协议

实例化一个 QDebug 对象并输出给它:

 QDebug dbg = qDebug().nospace().noquote();

dbg << var1 << "=" << var2;

产量:

 some string=1

输出到 dbg 您想要的所有对象 - 在超出范围之前不会有换行符。例如:

 char var1[] = "some string";
int var2 = 1;

{
    QDebug dbg = qDebug().nospace().noquote();

    dbg << var1 << "=" << var2;

    // keep using "dbg"; there's no newline ('\n') until it destructs
    dbg << "...";
    for (int i = 5; i <=9; ++i)
        dbg << i;
}

输出:

 some string=1...56789

原文由 pixelgrease 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题