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

Wes*_*ler 6 c++ qt qdebug

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

qDebug( format, ... );
Run Code Online (Sandbox Code Playgroud)

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

qDebug() << "one " << var_one;
Run Code Online (Sandbox Code Playgroud)

用法有什么不同,何时使用另一个是正确/更好的?Qt帮助在线以某种方式似乎参考功能版本但从未解释它.

Cap*_*liC 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;
Run Code Online (Sandbox Code Playgroud)

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

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

试试吧 qDebug() << QTime::currentTime();