2012-04-29 110 views
3

我想使用QTextStream输出到标准输出,但没有任何反应,除非我输入一个字符。我曾尝试过包括cstdlib,但这也不起作用。QTextStream不输出任何东西,我会做错什么?

注意:我试着删除所有引用我的stdin QTextStream和输出正常工作。

#include <QTextStream> 

    QTextStream out(stdout);   
    out << "Please enter login username and password\n"; 
    QTextStream in(stdin); 
    out << "username:"; 
    QString username = in.readLine(); 
    out << "password:"; 
    QString password = in.readLine(); 

回答

8

您在每次流中推东西的时间后手动刷新缓冲区:

QTextStream out(stdout); 
    out << "Please enter login username and password\n"; 
    out.flush(); 
    QTextStream in(stdin); 
    out << "username:"; 
    out.flush(); 
    QString username = in.readLine(); 
    out << "password:"; 
    out.flush(); 
    QString password = in.readLine(); 

另外,附加<< endl也适用。

+2

另外,正如你所说的,尽管endl会导致流被刷新,只是\ n在字符串的末尾不会。 – 2012-04-29 23:05:25

+0

非常好,谢谢你Emanuele。我认为这可能是这种情况。经过进一步的故障排除后,我注意到如果我在不同的示波器中分别使用它们,将会修复它。再次感谢你。 – 2012-04-30 00:09:11