qDebug()用作流和函数有什么区别

时间:2014-04-02 22:07:44

标签: c++ qt qdebug

我已经看到了一些使用qDebug的Qt代码,好像它是printf()

qDebug( format, ... );

大多数情况下,我看到它像std::cout

一样使用
qDebug() << "one " << var_one;

使用方法有何不同之处,何时使用其中一种方式更正确/更好? Qt在线帮助似乎在某种程度上引用了函数版本,但从未解释过它。

1 个答案:

答案 0 :(得分:7)

qDebug(pattern, object1, object2)它基本上是旧式fprintf(stderr, pattern, object1, object2),因此您依靠编译器支持来避免 - 例如 - 使用错误的模式崩溃您的程序,例如int x; qDebug("%s\n", x); 。好吧,GCC抓住了这个,但是我认为编译器不能总是知道模式是否合适。

我总是使用qDebug() << object << ...;,因为文档说明了

  

如果包含QtDebug,还可以使用更方便的语法:

qDebug() << "Brush:" << myQBrush << "Other value:" << i;
  

使用此语法,该函数返回一个配置为使用QtDebugMsg消息类型的QDebug对象。它会自动在每个项目之间放置一个空格,并在最后输出换行符。它支持许多C ++和Qt类型。

你可以将大多数Qt对象传递给qDebug()&lt;&lt; ......并以可读的方式呈现它们

尝试例如qDebug() << QTime::currentTime();