我一直想知道是否可以使用qDebug()
Qt C++ 中的语句来收集用户输入。
我试着像在标准 C++ 代码中那样做:
qDebug() >> myvar;
但它没有用。
如何stdin
使用 Qt 阅读?
qDebug
用于输出到stderr
. 如果你想stdin
使用 Qt 阅读,你应该使用QTextStream
:
#include <stdio.h>
QTextStream in(stdin);
QString line;
in >> line;
不,这是不可能的。qDebug仅提供用于调试信息的输出流。
由于您想使用QDebug,我认为输入可能是出于调试目的。在这种情况下,如果它是一个 GUI 应用程序,您可能会考虑使用QInputDialog来启动一个模式对话框来获取输入。它有一堆静态的方便方法,但作为一个例子,要获取一个字符串,你可以这样做:
qDebug() << "before debug input dialog";
QString debugText = QInputDialog::getText(NULL, "Input debug text", "Your input:");
qDebug() << "got text" << debugText;
与此不同的是,只需从标准输入读取,这不会阻塞整个事件循环(它将以通常的模式对话框方式禁用 GUI)。相反,从标准输入简单读取会阻塞整个事件循环。这在调试情况下是否无关紧要,或者您是否特别想要其中一种,取决于事件循环中发生的其他事情(例如网络内容)。但是,如果您将标准输入用于其他目的,那么这个对话框技巧会非常方便。
qDebug
和朋友将文本写入适当的位置。这可以是标准错误,但也可以是系统日志。qDebug
因此,并非所有写入的位置都支持用户输入。但即使他们愿意:Qt 如何确定用户输入应该转到qDebug
、qWarning
还是其他之一?这是不可能的。