2

我一直想知道是否可以使用qDebug()Qt C++ 中的语句来收集用户输入。

我试着像在标准 C++ 代码中那样做:

qDebug() >> myvar;

但它没有用。

如何stdin使用 Qt 阅读?

4

4 回答 4

7

qDebug用于输出到stderr. 如果你想stdin使用 Qt 阅读,你应该使用QTextStream

#include <stdio.h>

QTextStream in(stdin);

QString line;
in >> line;
于 2014-10-12T09:39:06.360 回答
2

不,这是不可能的。qDebug仅提供用于调试信息的输出流。

于 2014-10-12T09:13:16.007 回答
2

由于您想使用QDebug,我认为输入可能是出于调试目的。在这种情况下,如果它是一个 GUI 应用程序,您可能会考虑使用QInputDialog来启动一个模式对话框来获取输入。它有一堆静态的方便方法,但作为一个例子,要获取一个字符串,你可以这样做:

qDebug() << "before debug input dialog";
QString debugText = QInputDialog::getText(NULL, "Input debug text", "Your input:");
qDebug() << "got text" << debugText;

与此不同的是,只需从标准输入读取,这不会阻塞整个事件循环(它将以通常的模式对话框方式禁用 GUI)。相反,从标准输入简单读取阻塞整个事件循环。这在调试情况下是否无关紧要,或者您是否特别想要其中一种,取决于事件循环中发生的其他事情(例如网络内容)。但是,如果您将标准输入用于其他目的,那么这个对话框技巧会非常方便。

于 2014-10-12T11:00:19.787 回答
0

qDebug和朋友将文本写入适当的位置。这可以是标准错误,但也可以是系统日志。qDebug因此,并非所有写入的位置都支持用户输入。但即使他们愿意:Qt 如何确定用户输入应该转到qDebugqWarning还是其他之一?这是不可能的。

于 2014-10-12T10:06:43.820 回答