2010-02-23 10 views

Antwort

1

Ich habe gerade versucht, den folgenden Code mit QtCreator und es scheint zu funktionieren:

#include <QtCore/QCoreApplication> 
#include <iostream> 
using namespace std; 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    cout << endl << "hello" << endl; 
    int nb; 
    cout << "Enter a number " << endl; 
    cin>>nb; 
    cout << "Your number is "<< nb<< endl; 

    return a.exec(); 

}

Hoffe, es hilft ein wenig!

+1

Ich denke, er spricht über die Verwendung von Cin mit bestimmten Qt-Objekte vor allem QString nicht nur Intarsien. –

7

Ja, es ist möglich und funktioniert wie erwartet, obwohl Sie Dinge tun können, wie Threads, die Probleme mit diesem Ansatz verursachen können.

Allerdings würde ich einen idiomatischen (Qt) Weg von stdin zu lesen empfehlen:

QString yourText; 
QFile file; 
file.open(stdin, QIODevice::ReadOnly); 
QTextStream qtin(&file); 
qtin >> yourText; 
+0

Vielen Dank für solch ein nützliches Code-Schnipsel. – sivabudh

+0

Und Sie können mit cout (qout) ähnlich machen. Einer der größeren Vorteile ist die native Unterstützung für viele Qt-Typen. –

20

Ich testete Kaleb Pederson ‚s Antwort und fand eine consise Art und Weise als die Lösung, die er (obwohl ich vorgestellt haben ihn mir für den Hinweis auf die richtige Richtung) danken:

QTextStream qtin(stdin); 
QString line = qtin.readLine(); // This is how you read the entire line 

QString word; 
qtin >> word; // This is how you read a word (separated by space) at a time. 

Mit anderen Worten: Sie brauchen nicht wirklich QFile als Zwischenhändler.

+1

Coolbeans. Ich mochte die Idee nicht, "stdin" als gefälschte Datei zu verwenden. – mpen