[ fromfile: streams.xml id: streams ]
Streams are objects used for reading and writing.
The Standard Library defines <iostream>, while Qt defines <QTextStream> for the equivalent functionality.
iostream defines the three global streams:
cin - standard input (keyboard)
cout - standard output (console screen)
cerr - standard error (console screen)
Also defined in <iostream> are manipulators, such as flush and endl.
Manipulators are implicit calls to functions that can change the state of a stream object in various ways.
A manipulator can be a added to
an output stream to change the way the output data is formatted.
an input stream to change the way that the input data is interpreted.
Example 1.6 demonstrates the use of manipulators applied to the standard output stream.
Example 1.6. src/stdstreams/streamdemo.cpp
#include <iostream>
int main() {
using namespace std;
int num1(1234), num2(2345) ;
cout << oct << num2 << '\t'
<< hex << num2 << '\t'
<< dec << num2
<< endl;
cout << (num1 < num2) << endl;
cout << boolalpha
<< (num1 < num2)
<< endl;
double dub(1357);
cout << dub << '\t'
<< showpos << dub << '\t'
<< showpoint << dub
<< endl;
dub = 1234.5678;
cout << dub << '\t'
<< fixed << dub << '\t'
<< scientific << dub << '\n'
<< noshowpos << dub
<< endl;
}
Output:
4451 929 2345
1
true
1357 +1357 +1357.00
+1234.57 +1234.567800 +1.234568e+03
1.234568e+03
It is easy to define QTextStreams with the same names as their equivalent iostream counterparts.
Since standard input and output streams are often used primarily for debugging purposes,
Qt provides a global function, qDebug() that facilitates sending messages to stdout
with a flexible interface that we demonstrate in Example 1.7.
Example 1.7. src/qtstreams/qtstreamdemo.cpp
#include <QTextStream> #include <QDebug> QTextStream cin(stdin, QIODevice::ReadOnly); QTextStream cout(stdout, QIODevice::WriteOnly); QTextStream cerr(stderr, QIODevice::WriteOnly); int main() { int num1(1234), num2(2345) ; cout << oct << num2 << '\t' << hex << num2 << '\t' << dec << num2 << endl; double dub(1357); cout << dub << '\t' << forcesign << dub << '\t' << forcepoint << dub << endl; dub = 1234.5678; cout << dub << '\t' << fixed << dub << '\t' << scientific << dub << '\n' << noforcesign << dub << endl; qDebug() << "Here is a debug message with " << dub << "in it." ; qDebug("Here is one with the number %d in it.", num1 ); }Output:
4451 929 2345 1357 +1357 +1357.00 +1234.57 +1234.567800 +1.234568e+03 1.234568e+03 Here is a debug message with 1234.57 in it. Here is one with the number 1234 in it.
The symbols stdin, stdout, and stderr come from the C standard library.
Note that QTextStream also provides manipulators, some of which are spelled the same as the ones we used above with iostream.
| Generated: $Date: 2009-09-08 12:15:32 -0400 (Tue, 08 Sep 2009) $ | © 2009 Alan Ezust and Paul Ezust. |