Is it possible to use cin
in Qt? I can use cout
but cannot find examples of how to use cin
within a Qt console application.
Asked
Active
Viewed 2.5k times
3 Answers
25
I tested out Kaleb Pederson's answer, and found a more consise way than the solution he presented (though I have to thank him for pointing me to the right direction):
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.
In other words, you don't really need QFile as your middleman.
-
1Coolbeans. I didn't like the idea of using "stdin" as a fake file. – mpen Jun 10 '10 at 21:42
8
Yes, it's possible and works as expected although you can do things, like use threads, that may cause problems with this approach.
However, I would recommend a more idiomatic (Qt) way to read from stdin:
QString yourText;
QFile file;
file.open(stdin, QIODevice::ReadOnly);
QTextStream qtin(&file);
qtin >> yourText;

Kaleb Pederson
- 45,767
- 19
- 102
- 147
-
And you can do similar with cout (qout). One of the larger benefits is the native support for many Qt types. – Kaleb Pederson Jun 10 '10 at 21:57
2
I just tried the following code with QtCreator and it seems to be working :
#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();
}
Hope it helps a bit !

Andy M
- 5,945
- 7
- 51
- 96
-
2I think he is talking about using cin with certain qt objects especially QString not just ints. – Roman A. Taycher Feb 25 '10 at 07:12