Запись в stdout
Если вы хотите что-то, что, например, std::cout
, записывает в стандартный вывод вашего приложения, вы можете просто сделать следующие ( кредит для CapelliC ):
QTextStream(stdout) << "string to print" << endl;
Если вы хотите избежать создания временного QTextStream
объекта, следуйте предложению Якка в комментариях ниже о создании функции, возвращающей дескриптор static
для stdout
:
inline QTextStream& qStdout()
{
static QTextStream r{stdout};
return r;
}
...
foreach(QString x, strings)
qStdout() << x << endl;
Запомните до flush
потока периодически, чтобы гарантировать, что вывод фактически напечатан.
Запись в stderr
Обратите внимание, что вышеуказанная методика также может использоваться для других выходов. Однако есть более удобочитаемые способы написать в stderr
( кредит Гозу и комментарии под его ответом):
qDebug() << "Debug Message"; // CAN BE REMOVED AT COMPILE TIME!
qWarning() << "Warning Message";
qCritical() << "Critical Error Message";
qFatal("Fatal Error Message"); // WILL KILL THE PROGRAM!
qDebug()
закрывается, если QT_NO_DEBUG_OUTPUT
включен во время компиляции.
(Гоз отмечает в комментарии, что для неконсольных приложений они могут печатать в поток, отличный от stderr
.)
ПРИМЕЧАНИЕ: Все методы печати Qt предполагают, что const char*
аргументы представляют собой строки в кодировке ISO-8859-1 с завершающими \0
символами.