|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.trolltech.qt.internal.QSignalEmitterInternal
com.trolltech.qt.QSignalEmitter
com.trolltech.qt.QtJambiObject
com.trolltech.qt.core.QTextStream
public class QTextStream
The QTextStream class provides a convenient interface for reading and writing text. QTextStream can operate on a QIODevice
, a QByteArray
or a QString. Using QTextStream's streaming operators, you can conveniently read and write words, lines and numbers. For generating text, QTextStream supports formatting options for field padding and alignment, and formatting of numbers. Example:
QFile data = new QFile("output.txt"); if (data.open(QIODevice.OpenModeFlag.WriteOnly, QIODevice.OpenModeFlag.Truncate)) { QTextStream out = new QTextStream(data); out.writeString("Result: "); out.setFieldWidth(10); out.setFieldAlignment(QTextStream.FieldAlignment.AlignLeft); out.writeDouble(3.14).writeDouble(2.7).writeString("\n"); // writes "Result: 3.14 2.7 \n" }It's also common to use QTextStream to read console input and write console output. QTextStream is locale aware, and will automatically decode standard input using the correct codec. Example:
QTextStream stream(stdin); Stringsline; do { line = stream.readLine(); } while (!line.isNull());Note that you cannot use
QTextStream::atEnd()
, which returns true when you have reached the end of the data stream, with stdin. Besides using QTextStream's constructors, you can also set the device or string QTextStream operates on by calling setDevice()
or setString(). You can seek to a position by calling seek()
, and atEnd()
will return true when there is no data left to be read. If you call flush()
, QTextStream will empty all data from its write buffer into the device and call flush()
on the device.
Internally, QTextStream uses a Unicode based buffer, and QTextCodec
is used by QTextStream to automatically support different character sets. By default, QTextCodec::codecForLocale()
is used for reading and writing, but you can also set the codec by calling setCodec()
. Automatic Unicode detection is also supported. When this feature is enabled (the default behavior), QTextStream will detect the UTF-16 BOM (Byte Order Mark) and switch to the appropriate UTF-16 codec when reading. QTextStream does not write a BOM by default, but you can enable this by calling setGenerateByteOrderMark(true). When QTextStream operates on a QString directly, the codec is disabled.
There are three general ways to use QTextStream when reading text files:
readLine()
or readAll()
.skipWhiteSpace()
.QFile
and read from it directly using QFile::readLine()
instead of using the stream, the text stream's internal position will be out of sync with the file's position. By default, when reading numbers from a stream of text, QTextStream will automatically detect the number's base representation. For example, if the number starts with "0x", it is assumed to be in hexadecimal form. If it starts with the digits 1-9, it is assumed to be in decimal form, and so on. You can set the integer base, thereby disabling the automatic detection, by calling setIntegerBase()
. Example:
QTextStream in = new QTextStream(new QByteArray("0x50 0x20")); int firstNumber, secondNumber; firstNumber = in.readInt(); // firstNumber == 80 in.setIntegerBase(10); secondNumber = in.readInt(); // secondNumber == 0 String str; str = in.readString(); // str == "x20"QTextStream supports many formatting options for generating text. You can set the field width and pad character by calling
setFieldWidth()
and setPadChar()
. Use setFieldAlignment()
to set the alignment within each field. For real numbers, call setRealNumberNotation()
and setRealNumberPrecision()
to set the notation (SmartNotation
, ScientificNotation
, FixedNotation
) and precision in digits of the generated number. Some extra number formatting options are also available through setNumberFlags()
. Like <iostream> in the standard C++ library, QTextStream also defines several global manipulator functions: bin | Same as setIntegerBase(2). |
oct | Same as setIntegerBase(8). |
dec | Same as setIntegerBase(10). |
hex | Same as setIntegerBase(16). |
showbase | Same as setNumberFlags(numberFlags() | ShowBase ). |
forcesign | Same as setNumberFlags(numberFlags() | ForceSign ). |
forcepoint | Same as setNumberFlags(numberFlags() | ForcePoint ). |
noshowbase | Same as setNumberFlags(numberFlags() & ~ShowBase ). |
noforcesign | Same as setNumberFlags(numberFlags() & ~ForceSign ). |
noforcepoint | Same as setNumberFlags(numberFlags() & ~ForcePoint ). |
uppercasebase | Same as setNumberFlags(numberFlags() | UppercaseBase ). |
uppercasedigits | Same as setNumberFlags(numberFlags() | UppercaseDigits ). |
lowercasebase | Same as setNumberFlags(numberFlags() & ~UppercaseBase ). |
lowercasedigits | Same as setNumberFlags(numberFlags() & ~UppercaseDigits ). |
fixed | Same as setRealNumberNotation(FixedNotation ). |
scientific | Same as setRealNumberNotation(ScientificNotation ). |
left | Same as setFieldAlignment(AlignLeft ). |
right | Same as setFieldAlignment(AlignRight ). |
center | Same as setFieldAlignment(AlignCenter ). |
endl | Same as operator<<('\n') and flush() . |
flush | Same as flush() . |
reset | Same as reset() . |
ws | Same as skipWhiteSpace() . |
bom | Same as setGenerateByteOrderMark(true). |
QDataStream
, QIODevice
, QFile
, QBuffer
, QTcpSocket
, and Codecs Example.
Nested Class Summary | |
---|---|
static class |
QTextStream.FieldAlignment
This enum specifies how to align text in fields when the field is wider than the text that occupies it. |
static class |
QTextStream.NumberFlag
This enum specifies various flags that can be set to affect the output of integers, floats, and doubles. |
static class |
QTextStream.NumberFlags
|
static class |
QTextStream.RealNumberNotation
This enum specifies which notations to use for expressing float and double as strings. |
static class |
QTextStream.Status
This enum describes the current status of the text stream. |
Nested classes/interfaces inherited from class com.trolltech.qt.QSignalEmitter |
---|
QSignalEmitter.AbstractSignal, QSignalEmitter.Signal0, QSignalEmitter.Signal1, QSignalEmitter.Signal2, QSignalEmitter.Signal3, QSignalEmitter.Signal4, QSignalEmitter.Signal5, QSignalEmitter.Signal6, QSignalEmitter.Signal7, QSignalEmitter.Signal8, QSignalEmitter.Signal9 |
Nested classes/interfaces inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
com.trolltech.qt.internal.QSignalEmitterInternal.AbstractSignalInternal |
Field Summary |
---|
Fields inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
currentSender |
Constructor Summary | |
---|---|
QTextStream()
Constructs a QTextStream. |
|
QTextStream(QByteArray array)
Constructs a QTextStream that operates on array, using openMode to define the open mode. |
|
QTextStream(QByteArray array,
QIODevice.OpenMode openMode)
Constructs a QTextStream that operates on array, using openMode to define the open mode. |
|
QTextStream(QByteArray array,
QIODevice.OpenModeFlag[] openMode)
|
|
QTextStream(QIODevice device)
Constructs a QTextStream that operates on device. |
Method Summary | |
---|---|
boolean |
atEnd()
Returns true if there is no more data to be read from the QTextStream; otherwise returns false. |
boolean |
autoDetectUnicode()
Returns true if automatic Unicode detection is enabled; otherwise returns false. |
QTextCodec |
codec()
Returns the codec that is current assigned to the stream. |
QIODevice |
device()
Returns the current device associated with the QTextStream, or 0 if no device has been assigned. |
QTextStream.FieldAlignment |
fieldAlignment()
Returns the current field alignment. |
int |
fieldWidth()
Returns the current field width. |
void |
flush()
Flushes any buffered data waiting to be written to the device. |
boolean |
generateByteOrderMark()
Returns true if QTextStream is set to generate the UTF-16 BOM (Byte Order Mark) when using a UTF-16 codec; otherwise returns false. |
int |
integerBase()
Returns the current base of integers. |
QTextStream.NumberFlags |
numberFlags()
Returns the current number flags. |
char |
padChar()
Returns the current pad character. |
long |
pos()
Returns the device position corresponding to the current position of the stream, or -1 if an error occurs (e. |
java.lang.String |
read(long maxlen)
Reads at most maxlen characters from the stream, and returns the data read as a QString. |
java.lang.String |
readAll()
Reads the entire content of the stream, and returns it as a QString. |
byte |
readByte()
Reads a byte from the stream. |
char |
readChar()
Reads a characther from the stream. |
double |
readDouble()
Reads a double from the stream. |
float |
readFloat()
Reads a float from the stream. |
int |
readInt()
Reads an int from the stream. |
java.lang.String |
readLine()
Reads one line of text from the stream, and returns it as a QString. |
java.lang.String |
readLine(long maxlen)
Reads one line of text from the stream, and returns it as a QString. |
long |
readLong()
Reads a long from the stream. |
short |
readShort()
Reads a short from the stream |
java.lang.String |
readString()
Reads a String from the stream. |
QTextStream.RealNumberNotation |
realNumberNotation()
Returns the current real number notation. |
int |
realNumberPrecision()
Returns the current real number precision, or the number of fraction digits QTextStream will write when generating real numbers. |
void |
reset()
Resets QTextStream's formatting options, bringing it back to its original constructed state. |
void |
resetStatus()
Resets the status of the text stream. |
boolean |
seek(long pos)
Seeks to the position pos in the device. |
void |
setAutoDetectUnicode(boolean enabled)
If enabled is true, QTextStream will attempt to detect Unicode encoding by peeking into the stream data to see if it can find the UTF-16 BOM (Byte Order Mark). |
void |
setCodec(QTextCodec codec)
Sets the codec for this stream to codec. |
void |
setCodec(java.lang.String codecName)
Sets the codec for this stream to the QTextCodec for the encoding specified by codecName. |
void |
setDevice(QIODevice device)
Sets the current device to device. |
void |
setFieldAlignment(QTextStream.FieldAlignment alignment)
Sets the field alignment to mode. |
void |
setFieldWidth(int width)
Sets the current field width to width. |
void |
setGenerateByteOrderMark(boolean generate)
If generate is true and a UTF-16 codec is used, QTextStream will insert the BOM (Byte Order Mark) before any data has been written to the device. |
void |
setIntegerBase(int base)
Sets the base of integers to base, both for reading and for generating numbers. |
void |
setNumberFlags(QTextStream.NumberFlag[] flags)
|
void |
setNumberFlags(QTextStream.NumberFlags flags)
Sets the current number flags to flags. |
void |
setPadChar(char ch)
Sets the pad character to ch. |
void |
setRealNumberNotation(QTextStream.RealNumberNotation notation)
Sets the real number notation to notation ( SmartNotation , FixedNotation , ScientificNotation ). |
void |
setRealNumberPrecision(int precision)
Sets the precision of real numbers to precision. |
void |
setStatus(QTextStream.Status status)
Sets the status of the text stream to the status given. |
void |
skipWhiteSpace()
Reads and discards whitespace from the stream until either a non-space character is detected, or until atEnd() returns true. |
QTextStream.Status |
status()
Returns the status of the text stream. |
QTextStream |
writeByte(byte ch)
Converts c from ASCII to a QChar, then writes it to the stream. |
QTextStream |
writeChar(char c)
Writes a character to the stream. |
QTextStream |
writeDouble(double f)
Writes the double f to the stream. |
QTextStream |
writeFloat(float f)
Writes the real number f to the stream, then returns a reference to the QTextStream. |
QTextStream |
writeInt(int i)
Writes the unsigned int i to the stream. |
QTextStream |
writeLong(long i)
Writes the qlonglong i to the stream. |
QTextStream |
writeShort(short s)
Writes s to the stream. |
void |
writeString(java.lang.String string)
Writes string to the stream. |
Methods inherited from class com.trolltech.qt.QtJambiObject |
---|
dispose, disposed, equals, finalize, reassignNativeResources, tr, tr, tr |
Methods inherited from class com.trolltech.qt.QSignalEmitter |
---|
blockSignals, disconnect, disconnect, signalsBlocked, signalSender, thread |
Methods inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
__qt_signalInitialization |
Methods inherited from class java.lang.Object |
---|
clone, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.trolltech.qt.QtJambiInterface |
---|
disableGarbageCollection, nativeId, nativePointer, reenableGarbageCollection, setJavaOwnership |
Constructor Detail |
---|
public QTextStream()
setDevice()
, and setString().
public QTextStream(QIODevice device)
public QTextStream(QByteArray array, QIODevice.OpenModeFlag[] openMode)
public QTextStream(QByteArray array)
QBuffer
.
public QTextStream(QByteArray array, QIODevice.OpenMode openMode)
QBuffer
.
Method Detail |
---|
public final boolean atEnd()
QIODevice::atEnd()
, as QTextStream also takes into account its internal Unicode buffer.
public final boolean autoDetectUnicode()
setAutoDetectUnicode()
, and setCodec()
.
public final QTextCodec codec()
setCodec()
, and setAutoDetectUnicode()
.
public final QIODevice device()
setDevice()
, and string().
public final QTextStream.FieldAlignment fieldAlignment()
setFieldAlignment()
, and fieldWidth()
.
public final int fieldWidth()
setFieldWidth()
.
public final void flush()
If QTextStream operates on a string, this function does nothing.
public final boolean generateByteOrderMark()
setGenerateByteOrderMark()
.
public final int integerBase()
setIntegerBase()
, QString::number(), and numberFlags()
.
public final QTextStream.NumberFlags numberFlags()
setNumberFlags()
, integerBase()
, and realNumberNotation()
.
public final QTextStream writeByte(byte ch)
public final QTextStream writeDouble(double f)
public final QTextStream writeFloat(float f)
SmartNotation
, with up to 6 digits of precision. You can change the textual representation QTextStream will use for real numbers by calling setRealNumberNotation()
, setRealNumberPrecision()
and setNumberFlags()
. setFieldWidth()
, setRealNumberNotation()
, setRealNumberPrecision()
, and setNumberFlags()
.
public final QTextStream writeLong(long i)
public final QTextStream writeInt(int i)
public final char padChar()
setPadChar()
, and setFieldWidth()
.
public final long pos()
Because QTextStream is buffered, this function may have to seek the device to reconstruct a valid device position. This operation can be expensive, so you may want to avoid calling this function in a tight loop.
seek()
.
public final java.lang.String read(long maxlen)
readAll()
, readLine()
, and QIODevice::read()
.
public final java.lang.String readAll()
Calling readLine()
is better if you do not know how much data is available.
readLine()
.
public final java.lang.String readLine()
If maxlen is 0, the lines can be of any length. A common value for maxlen is 75.
The returned line has no trailing end-of-line characters ("\n" or "\r\n"), so calling QString::trimmed() is unnecessary.
If the stream has read to the end of the file, readLine()
will return a null QString. For strings, or for devices that support it, you can explicitly test for the end of the stream using atEnd()
.
readAll()
, and QIODevice::readLine()
.
public final java.lang.String readLine(long maxlen)
If maxlen is 0, the lines can be of any length. A common value for maxlen is 75.
The returned line has no trailing end-of-line characters ("\n" or "\r\n"), so calling QString::trimmed() is unnecessary.
If the stream has read to the end of the file, readLine()
will return a null QString. For strings, or for devices that support it, you can explicitly test for the end of the stream using atEnd()
.
readAll()
, and QIODevice::readLine()
.
public final QTextStream.RealNumberNotation realNumberNotation()
setRealNumberNotation()
, realNumberPrecision()
, numberFlags()
, and integerBase()
.
public final int realNumberPrecision()
setRealNumberPrecision()
, setRealNumberNotation()
, realNumberNotation()
, numberFlags()
, and integerBase()
.
public final void reset()
public final void resetStatus()
QTextStream::Status
, status()
, and setStatus()
.
public final boolean seek(long pos)
public final void setAutoDetectUnicode(boolean enabled)
This function can be used together with setCodec()
. It is common to set the codec to UTF-8, and then enable UTF-16 detection.
autoDetectUnicode()
, and setCodec()
.
public final void setCodec(QTextCodec codec)
QTextCodec::codecForLocale()
is used, and automatic unicode detection is enabled. If QTextStream operates on a string, this function does nothing.
Warning: If you call this function while the text stream is reading from an open sequential socket, the internal buffer may still contain text decoded using the old codec.
codec()
, and setAutoDetectUnicode()
.
public final void setDevice(QIODevice device)
flush()
before the old device is replaced. Note: This function resets the codec to the default codec, QTextCodec::codecForLocale()
.
device()
, and setString().
public final void setFieldAlignment(QTextStream.FieldAlignment alignment)
setFieldWidth()
, this function allows you to generate formatted output with text aligned to the left, to the right or center aligned. fieldAlignment()
, and setFieldWidth()
.
public final void setFieldWidth(int width)
Note: The field width applies to every element appended to this stream after this function has been called (e.g., it also pads endl). This behavior is different from similar classes in the STL, where the field width only applies to the next element.
fieldWidth()
, and setPadChar()
.
public final void setGenerateByteOrderMark(boolean generate)
generateByteOrderMark()
, and bom().
public final void setIntegerBase(int base)
integerBase()
, QString::number(), and setNumberFlags()
.
public final void setNumberFlags(QTextStream.NumberFlag[] flags)
public final void setNumberFlags(QTextStream.NumberFlags flags)
NumberFlag
enum, and describes options for formatting generated code (e.g., whether or not to always write the base or sign of a number). numberFlags()
, setIntegerBase()
, and setRealNumberNotation()
.
public final void setPadChar(char ch)
Example:
QByteArray b = new QByteArray(); QTextStream out = new QTextStream(b); out.setFieldWidth(10); out.setPadChar('-'); out.writeString("Qt"); out.writeString("\n"); out.writeString("rocks!"); out.writeString("\n");Output:
----Qt---- --rocks!--
padChar()
, and setFieldWidth()
.
public final void setRealNumberNotation(QTextStream.RealNumberNotation notation)
SmartNotation
, FixedNotation
, ScientificNotation
). When reading and generating numbers, QTextStream uses this value to detect the formatting of real numbers. realNumberNotation()
, setRealNumberPrecision()
, setNumberFlags()
, and setIntegerBase()
.
public final void setRealNumberPrecision(int precision)
The precision cannot be a negative value. The default value is 6.
realNumberPrecision()
, and setRealNumberNotation()
.
public final void setStatus(QTextStream.Status status)
Status
, status()
, and resetStatus()
.
public final void skipWhiteSpace()
atEnd()
returns true. This function is useful when reading a stream character by character. Whitespace characters are all characters for which QChar::isSpace() returns true.
public final QTextStream.Status status()
QTextStream::Status
, setStatus()
, and resetStatus()
.
public final void setCodec(java.lang.String codecName)
Example:
QTextStream out(&file);
out.setCodec("UTF-8");
public final byte readByte()
public final short readShort()
public final int readInt()
public final long readLong()
public final float readFloat()
public final double readDouble()
public final QTextStream writeShort(short s)
public final QTextStream writeChar(char c)
public final char readChar()
public final java.lang.String readString()
public final void writeString(java.lang.String string)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |