このページでは

QTextStream Class

QTextStream クラスは、テキストの読み書きを行うための便利なインターフェースを提供します。詳細...

ヘッダー: #include <QTextStream>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承元: QIODeviceBase

注:このクラスのすべての関数は再入可能です。

パブリック型

enum FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle }
enum NumberFlag { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits }
flags NumberFlags
enum RealNumberNotation { ScientificNotation, FixedNotation, SmartNotation }
enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed }

パブリック関数

QTextStream()
QTextStream(QIODevice *device)
QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite)
QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite)
QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly)
virtual ~QTextStream()
bool atEnd() const
bool autoDetectUnicode() const
QIODevice *device() const
QStringConverter::Encoding encoding() const
QTextStream::FieldAlignment fieldAlignment() const
int fieldWidth() const
void flush()
bool generateByteOrderMark() const
int integerBase() const
QLocale locale() const
QTextStream::NumberFlags numberFlags() const
QChar padChar() const
qint64 pos() const
QString read(qint64 maxlen)
QString readAll()
QString readLine(qint64 maxlen = 0)
bool readLineInto(QString *line, qint64 maxlen = 0)
QTextStream::RealNumberNotation realNumberNotation() const
int realNumberPrecision() const
void reset()
void resetStatus()
bool seek(qint64 pos)
void setAutoDetectUnicode(bool enabled)
void setDevice(QIODevice *device)
(since 6.0) void setEncoding(QStringConverter::Encoding encoding)
void setFieldAlignment(QTextStream::FieldAlignment mode)
void setFieldWidth(int width)
void setGenerateByteOrderMark(bool generate)
void setIntegerBase(int base)
void setLocale(const QLocale &locale)
void setNumberFlags(QTextStream::NumberFlags flags)
void setPadChar(QChar ch)
void setRealNumberNotation(QTextStream::RealNumberNotation notation)
void setRealNumberPrecision(int precision)
void setStatus(QTextStream::Status status)
void setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
void skipWhiteSpace()
QTextStream::Status status() const
QString *string() const
(since 6.10) operator bool() const
QTextStream &operator<<(QChar c)
QTextStream &operator<<(const QString &string)
QTextStream &operator<<(float f)
QTextStream &operator<<(short i)
QTextStream &operator<<(QLatin1StringView string)
QTextStream &operator<<(QStringView string)
QTextStream &operator<<(char c)
(since 6.3.1) QTextStream &operator<<(char16_t c)
QTextStream &operator<<(const QByteArray &array)
QTextStream &operator<<(const char *string)
QTextStream &operator<<(const void *ptr)
QTextStream &operator<<(double f)
QTextStream &operator<<(int i)
QTextStream &operator<<(long i)
QTextStream &operator<<(qlonglong i)
QTextStream &operator<<(qulonglong i)
QTextStream &operator<<(unsigned int i)
QTextStream &operator<<(unsigned long i)
QTextStream &operator<<(unsigned short i)
QTextStream &operator>>(QChar &c)
QTextStream &operator>>(QString &str)
QTextStream &operator>>(float &f)
QTextStream &operator>>(short &i)
QTextStream &operator>>(QByteArray &array)
QTextStream &operator>>(char &c)
(since 6.4) QTextStream &operator>>(char16_t &c)
QTextStream &operator>>(double &f)
QTextStream &operator>>(int &i)
QTextStream &operator>>(long &i)
QTextStream &operator>>(qlonglong &i)
QTextStream &operator>>(qulonglong &i)
QTextStream &operator>>(unsigned int &i)
QTextStream &operator>>(unsigned long &i)
QTextStream &operator>>(unsigned short &i)
QTextStreamManipulator qSetFieldWidth(int width)
QTextStreamManipulator qSetPadChar(QChar ch)
QTextStreamManipulator qSetRealNumberPrecision(int precision)

詳細説明

QTextStreamは、QIODevice 、QByteArray 、またはQString に対して操作を行うことができます。QTextStreamのストリーミング演算子を使用すると、単語、行、数値を簡単に読み書きできます。テキストの生成において、QTextStreamはフィールドのパディングや配置、数値の書式設定などの書式設定オプションをサポートしています。例:

QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
    QTextStream out(&data);
    out << "Result: " << qSetFieldWidth(10) << Qt::left << 3.14 << 2.7;
    // writes "Result: 3.14      2.7       "
}

また、QTextStream を使用してコンソール入力を読み込んだり、コンソール出力を書き込んだりすることも一般的です。QTextStream はロケールに対応しており、標準入力を適切なエンコーディングで自動的にデコードします。例:

QTextStream stream(stdin);
QString line;
while (stream.readLineInto(&line)) {
    //...
}

QTextStreamのコンストラクタを使用するほか、setDevice() やsetString() を呼び出すことで、QTextStreamが操作するデバイスや文字列を設定することもできます。seek() を呼び出すことで特定の位置にシークすることができ、atEnd() は、読み取るデータがなくなると true を返します。flush() を呼び出すと、QTextStream はその書き込みバッファ内のすべてのデータをデバイスに書き出し、デバイスに対してflush() を呼び出します。

内部的には、QTextStreamはUnicodeベースのバッファを使用しており、QStringConverter を用いて異なるエンコーディングを自動的にサポートしています。デフォルトでは、読み書きにUTF-8が使用されますが、setEncoding()を呼び出すことでエンコーディングを設定することも可能です。 自動ユニコード検出もサポートされています。この機能が有効になっている場合(デフォルトの動作)、QTextStreamはUTF-8、UTF-16、またはUTF-32のBOM(バイト順マーク)を検出し、読み取り時に適切なUTFエンコーディングに切り替えます。 QTextStreamはデフォルトではBOMを書き込みませんが、setGenerateByteOrderMark()を呼び出してtrueを指定することで、これを有効にすることができます。QTextStreamがQString を直接操作する場合、エンコーディングは無効になります。

テキストファイルを読み込む際に QTextStream を使用するには、一般的に以下の 3 つの方法があります:

  • readLine() またはreadAll() を呼び出して、チャンク単位で処理する。
  • 単語単位で処理する。QTextStreamは、QString、QByteArray、およびchar*バッファへのストリーミングをサポートしています。単語はスペースで区切られ、先頭の空白は自動的にスキップされます。
  • QChar または char 型へのストリーム入力による、1 文字ごとの処理。この方法は、文字エンコーディングや改行のセマンティクスに依存せず、ファイルの解析時に入力を便利に処理するためによく使用されます。空白をスキップするには、skipWhiteSpace() を呼び出してください。

テキストストリームはバッファを使用するため、スーパークラスの実装を使用してストリームから読み取ってはなりません。たとえば、QFile があり、ストリームを使用せずにQFile::readLine() を使用して直接読み取ると、テキストストリームの内部位置とファイルの位置がずれてしまいます。

デフォルトでは、テキストストリームから数値を読み込む際、QTextStream はその数値の基数表現を自動的に検出します。 たとえば、数値が「0x」で始まる場合は16進数形式であるとみなされます。1~9の数字で始まる場合は10進数形式であるとみなされます。setIntegerBase() を呼び出すことで、整数の基数を設定し、自動検出を無効にすることができます。例:

QTextStream in("0x50 0x20");
int firstNumber, secondNumber;

in >> firstNumber;             // firstNumber == 80
in >> Qt::dec >> secondNumber;     // secondNumber == 0

char ch;
in >> ch;                      // ch == 'x'

QTextStreamは、テキスト生成のための多くの書式設定オプションをサポートしています。setFieldWidth()およびsetPadChar()を呼び出すことで、フィールド幅やパディング文字を設定できます。各フィールド内での配置を設定するには、setFieldAlignment()を使用します。 実数については、setRealNumberNotation() およびsetRealNumberPrecision() を呼び出して、表記形式(SmartNotation 、ScientificNotation 、FixedNotation )と、生成される数値の桁数を設定します。また、setNumberFlags() を通じて、その他の数値書式設定オプションも利用可能です。

標準C++ライブラリの<iostream> と同様に、QTextStreamもいくつかのグローバルマニピュレータ関数を定義しています:

マニピュレータ説明
Qt::binsetIntegerBase (2)と同様です。
Qt::octsetIntegerBase(8) と同様です。
Qt::decsetIntegerBase(10) と同様。
Qt::hexsetIntegerBase(16) と同様。
Qt::showbasesetNumberFlags(numberFlags() |ShowBase) と同様です。
Qt::forcesignsetNumberFlags(numberFlags() |ForceSign) と同じです。
Qt::forcepointsetNumberFlags(numberFlags() |ForcePoint) と同じです。
Qt::noshowbasesetNumberFlags(numberFlags() & ~ShowBase) と同じです。
Qt::noforcesignsetNumberFlags (numberFlags() & ~ForceSign )と同じです。
Qt::noforcepointsetNumberFlags(numberFlags() & ~ForcePoint) と同じです。
Qt::uppercasebasesetNumberFlags(numberFlags() |UppercaseBase) と同じです。
Qt::uppercasedigitssetNumberFlags(numberFlags() |UppercaseDigits) と同じです。
Qt::lowercasebasesetNumberFlags と同様です(numberFlags() & ~UppercaseBase )。
Qt::lowercasedigitssetNumberFlags と同じです (numberFlags() & ~UppercaseDigits)。
Qt::fixedsetRealNumberNotation(FixedNotation) と同じです。
Qt::scientificsetRealNumberNotation(ScientificNotation) と同じです。
Qt::leftsetFieldAlignment(AlignLeft) と同じです。
Qt::rightsetFieldAlignment(AlignRight) と同じです。
Qt::centersetFieldAlignment(AlignCenter) と同じです。
Qt::endloperator<<('\n') およびflush() と同じです。
Qt::flushflush() と同じです。
Qt::resetreset() と同じです。
Qt::wsskipWhiteSpace() と同じです。
Qt::bomsetGenerateByteOrderMark(true) と同じです。

さらに、Qt には、パラメータを取る 3 つのグローバルマニピュレータ、qSetFieldWidth()、qSetPadChar()、およびqSetRealNumberPrecision() が用意されています。

QDataStream 、QIODevice 、QFile 、QBuffer 、およびQTcpSocketも参照してください 。

メンバ型のドキュメント

enum QTextStream::FieldAlignment

この列挙型は、フィールドの幅がそこに表示されるテキストの幅よりも広い場合に、フィールド内のテキストをどのように揃えるかを指定します。

定数値説明
QTextStream::AlignLeft0フィールドの右側にパディングを行います。
QTextStream::AlignRight1フィールドの右側にパディングを行います。フィールドの左側にパディングを行います。
QTextStream::AlignCenter2フィールドの両側にパディングを適用します。
QTextStream::AlignAccountingStyle3AlignRight と同じですが、数値の符号が左揃えになる点が異なります。

setFieldAlignment()も参照してください 。

enum QTextStream::NumberFlag
flags QTextStream::NumberFlags

この列挙型は、整数、float、およびdoubleの出力に影響を与えるために設定できるさまざまなフラグを規定しています。

定数定数値説明
QTextStream::ShowBase0x1基数が 16(「0x」)、8(「0」)、または 2(「0b」)の場合は、基数を接頭辞として表示します。
QTextStream::ForcePoint0x216 進数(「0x」)、8 進数(「0」)、2 進数(「0b」)の場合、基数を接頭辞として表示します。小数点がない場合でも、数値には常に小数点区切り記号を付けます。
QTextStream::ForceSign0x4正の数であっても、数値には常に符号を付ける。
QTextStream::UppercaseBase0x8基数の接頭辞には大文字を使用する(「0X」、「0B」)。
QTextStream::UppercaseDigits0x1010 から 35 までの数字を表すには、小文字ではなく大文字を使用します。

NumberFlags 型は、QFlags<NumberFlag> の typedef です。これは、NumberFlag 値の OR 組み合わせを格納します。

setNumberFlags()も参照してください 。

enum QTextStream::RealNumberNotation

この列挙型は、float およびdouble を文字列として表現する際に使用する表記法を指定します。

定数定数値説明
QTextStream::ScientificNotation2科学表記 (printf() の%e フラグ)。
QTextStream::FixedNotation1固定小数点表記 (printf() の%f フラグ)。
QTextStream::SmartNotation0科学表記または固定小数点表記。どちらが最も適切かによって決定されます(printf() の%g フラグ)。

setRealNumberNotation()も参照してください 。

enum QTextStream::Status

この列挙型は、テキストストリームの現在の状態を表します。

定数値説明
QTextStream::Ok0テキストストリームは正常に動作しています。
QTextStream::ReadPastEnd1テキストストリームは、基になるデバイス内のデータの末尾を超えて読み込みを行っています。
QTextStream::ReadCorruptData2テキストストリームが破損したデータを読み取りました。
QTextStream::WriteFailed3テキスト・ストリームは、基になるデバイスへの書き込みを行うことができません。

関連項目: status()。

メンバ関数のドキュメント

QTextStream::QTextStream()

QTextStream を作成します。読み取りや書き込みに使用するには、デバイスまたは文字列を割り当てる必要があります。

setDevice() およびsetString()も参照してください 。

[explicit] QTextStream::QTextStream(QIODevice *device)

device を操作する QTextStream を生成します。

[explicit] QTextStream::QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite)

fileHandle を操作する QTextStream を構築し、openMode を使用してオープンモードを定義します。内部的には、FILE ポインタを処理するためにQFile が作成されます。

このコンストラクタは、stdin、stdout、stderrといった一般的なFILEベースの入出力ストリームを直接扱う際に役立ちます。例:

QString str;
QTextStream in(stdin);
in >> str;

[explicit] QTextStream::QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite)

array を操作する QTextStream を構築し、openMode を使用してオープンモードを定義します。内部的には、この配列はQBuffer でラップされています。

[explicit] QTextStream::QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)

string を対象とする QTextStream を生成し、openMode を使用してオープンモードを定義します。

[explicit] QTextStream::QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly)

array を操作する QTextStream を生成します。この際、openMode を使用してオープンモードを定義します。openMode の値にかかわらず、配列へのアクセスは読み取り専用となります。

このコンストラクタは、定数文字列を扱う際に便利です。例:

int main(int argc, char *argv[])
{
    // read numeric arguments (123, 0x20, 4.5...)
    for (int i = 1; i < argc; ++i) {
        int number;
        QTextStream in(argv[i]);
        in >> number;
        //...
    }
}

[virtual noexcept] QTextStream::~QTextStream()

QTextStream を破棄します。

ストリームがデバイス上で動作している場合、flush() が暗黙的に呼び出されます。そうでない場合、デバイスには影響しません。

bool QTextStream::atEnd() const

QTextStream から読み取るデータがなくなると、true を返します。それ以外の場合は、false を返します。これはQIODevice::atEnd()を呼び出すことと似ていますが、まったく同じではありません。QTextStream は、その内部のUnicodeバッファも考慮に入れるためです。

bool QTextStream::autoDetectUnicode() const

自動Unicode検出が有効になっている場合は `true ` を返し、そうでない場合は `false` を返します。自動Unicode検出はデフォルトで有効になっています。

setAutoDetectUnicode() およびsetEncoding()も参照してください 。

QIODevice *QTextStream::device() const

QTextStream に関連付けられている現在のデバイスを返します。デバイスが割り当てられていない場合は、nullptr を返します。

setDevice() およびstring()も参照してください 。

QStringConverter::Encoding QTextStream::encoding() const

そのストリームに現在割り当てられているエンコーディングを返します。

setEncoding()、setAutoDetectUnicode()、およびlocale()も参照してください 。

QTextStream::FieldAlignment QTextStream::fieldAlignment() const

現在のフィールドの配置を返します。

setFieldAlignment() およびfieldWidth()も参照してください 。

int QTextStream::fieldWidth() const

現在のフィールド幅を返します。

setFieldWidth()も参照してください 。

void QTextStream::flush()

デバイスへの書き込みを待機しているバッファ内のデータをすべてフラッシュします。

QTextStream が文字列に対して動作する場合、この関数は何も行いません。

bool QTextStream::generateByteOrderMark() const

UTFエンコーディングを使用する際、QTextStream がUTF BOM(バイト順マーク)を生成するように設定されている場合はtrue を返し、そうでない場合はfalse を返します。UTF BOMの生成は、デフォルトでfalseに設定されています。

setGenerateByteOrderMark()も参照してください 。

int QTextStream::integerBase() const

整数の現在の基数を返します。0 は読み取り時に基数が検出されることを意味し、10(10進数)は数値を生成する際に基数が10であることを意味します。

setIntegerBase()、QString::number()、およびnumberFlags()も参照してください 。

QLocale QTextStream::locale() const

このストリームのロケールを返します。デフォルトのロケールは C です。

setLocale()も参照してください 。

QTextStream::NumberFlags QTextStream::numberFlags() const

現在のフラグの数を返します。

setNumberFlags()、integerBase()、およびrealNumberNotation()も参照してください 。

QChar QTextStream::padChar() const

現在のパッド文字を返します。

setPadChar() およびsetFieldWidth()も参照してください 。

qint64 QTextStream::pos() const

ストリームの現在の位置に対応するデバイスの位置を返します。エラーが発生した場合は -1 を返します(例:デバイスや文字列が存在しない場合、またはデバイスエラーが発生した場合など)。

QTextStream はバッファリングされているため、この関数は有効なデバイス位置を再構築するためにデバイスをシークする必要がある場合があります。この操作は負荷が高くなる可能性があるため、タイトなループ内でのこの関数の呼び出しは避けることをお勧めします。

seek()も参照してください 。

QString QTextStream::read(qint64 maxlen)

ストリームから最大maxlen 文字を読み取り、読み取ったデータをQString として返します。

readAll()、readLine()、およびQIODevice::read()も参照してください 。

QString QTextStream::readAll()

ストリームの内容全体を読み込み、それをQString として返します。この関数は大量のメモリを消費するため、大容量のファイルを扱う場合は使用を避けてください。

利用可能なデータ量が不明な場合は、readLine() を呼び出す方が適しています。

readLine()も参照してください 。

QString QTextStream::readLine(qint64 maxlen = 0)

ストリームからテキストを1行読み取り、それをQString として返します。許可される最大行長はmaxlen に設定されています。ストリームにこの長さを超える行が含まれている場合、maxlen 文字ごとに分割され、部分ごとに返されます。

maxlen が0の場合、行の長さに制限はありません。

返される行には、末尾に行末文字(「\n 」または「\r\n 」)は含まれないため、QString::trimmed() を呼び出す必要はありません。

ストリームがファイルの末尾まで読み込んだ場合、readLine() は null のQString を返します。文字列の場合、またはそれをサポートするデバイスの場合は、atEnd() を使用して、ストリームの末尾を明示的に検査することができます。

readAll() およびQIODevice::readLine()も参照してください 。

bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)

ストリームから1行のテキストを読み取り、line に格納します。line がnullptr に設定されている場合、読み込まれた行は保存されません。

許可される行の長さの最大値はmaxlen に設定されます。ストリームにこの値より長い行が含まれている場合、その行はmaxlen 文字ごとに分割され、部分ごとに返されます。

maxlen が 0 の場合、行の長さは任意です。

結果の行には、末尾に行末文字(「\n 」または「\r\n 」)が含まれないため、QString::trimmed() を呼び出す必要はありません。

line に、これから読み込まれるデータに対して十分な容量がある場合、この関数は新しいメモリを割り当てる必要がない可能性があります。このため、readLine() よりも高速に動作する可能性があります。

ストリームがファイルの末尾まで読み込んだ場合、またはエラーが発生した場合はfalse を返し、それ以外の場合はtrue を返します。いずれの場合も、呼び出し前のline 内の内容は破棄されます。

readAll()、QIODevice::readLine()、およびQIODevice::readLineInto()も参照してください 。

QTextStream::RealNumberNotation QTextStream::realNumberNotation() const

現在の実数表記を返します。

setRealNumberNotation()、realNumberPrecision()、numberFlags()、およびintegerBase()も参照してください 。

int QTextStream::realNumberPrecision() const

現在の実数の精度、あるいはQTextStream が実数を生成する際に書き出す小数桁数(FixedNotation 、ScientificNotation )、または有効桁数の最大値(SmartNotation )を返します。

setRealNumberPrecision()、setRealNumberNotation()、realNumberNotation()、numberFlags()、およびintegerBase()も参照してください 。

void QTextStream::reset()

QTextStream の書式設定オプションをリセットし、構築時の状態に戻します。デバイス、文字列、およびバッファに格納されているデータには一切影響しません。

void QTextStream::resetStatus()

テキストストリームの状態をリセットします。

QTextStream::Status 、status()、およびsetStatus()も参照してください 。

bool QTextStream::seek(qint64 pos)

デバイス内のpos の位置を検索します。成功した場合はtrue を返し、失敗した場合はfalse を返します。

void QTextStream::setAutoDetectUnicode(bool enabled)

enabled がtrueの場合、QTextStream は、ストリームデータを調べ、UTF-8、UTF-16、またはUTF-32のバイト順マーク(BOM)が見つかるかどうかを確認することで、Unicodeエンコーディングの検出を試みます。このマークが見つかった場合、QTextStream は現在のエンコーディングをUTFエンコーディングに置き換えます。

この関数は、setEncoding() と組み合わせて使用できます。エンコーディングを UTF-8 に設定し、その後 UTF-16 検出を有効にするのが一般的です。

autoDetectUnicode() およびsetEncoding()も参照してください 。

void QTextStream::setDevice(QIODevice *device)

現在のデバイスをdevice に設定します。すでにデバイスが割り当てられている場合、QTextStream は、古いデバイスが置き換えられる前にflush()を呼び出します。

注:この関数は 、ロケールをデフォルトのロケール('C')に、エンコーディングをデフォルトのエンコーディングであるUTF-8にリセットします。

device() およびsetString()も参照してください 。

[since 6.0] void QTextStream::setEncoding(QStringConverter::Encoding encoding)

このストリームのエンコーディングをencoding に設定します。このエンコーディングは、割り当てられたデバイスから読み込まれるデータの復号化、および書き込まれるデータの符号化に使用されます。デフォルトでは、QStringConverter::Utf8 が使用され、ユニコードの自動検出が有効になっています。

QTextStream が文字列に対して動作する場合、この関数は何もしません。

警告: テキストストリームが開いているシーケンシャルソケットから読み込みを行っている最中にこの関数を呼び出すと 、内部バッファには依然として古いエンコーディングでデコードされたテキストが残っている可能性があります。

この関数は Qt 6.0 で導入されました。

関連項目: encoding()、setAutoDetectUnicode()、およびsetLocale()を参照してください 。

void QTextStream::setFieldAlignment(QTextStream::FieldAlignment mode)

フィールドの配置をmode に設定します。setFieldWidth()と組み合わせて使用することで、テキストを左揃え、右揃え、または中央揃えにした書式付き出力を生成することができます。

fieldAlignment() およびsetFieldWidth()も参照してください 。

void QTextStream::setFieldWidth(int width)

現在のフィールド幅をwidth に設定します。width が0(デフォルト)の場合、フィールド幅は生成されたテキストの長さと同じになります。

注: フィールド幅は、 この関数が呼び出された後にこのストリームに追加されるすべての要素に適用されます(たとえば、endlにもパディングが適用されます)。この動作は、フィールド幅が次の要素にのみ適用されるSTLの類似クラスとは異なります。

fieldWidth() およびsetPadChar()も参照してください 。

void QTextStream::setGenerateByteOrderMark(bool generate)

generate がtrueで、かつUTFエンコーディングが使用されている場合、QTextStream は、デバイスへのデータ書き込みが行われる前にBOM(バイト順マーク)を挿入します。generate がfalseの場合、BOMは挿入されません。この関数は、データの書き込みが行われる前に呼び出す必要があります。そうでない場合、何もしません。

generateByteOrderMark() およびbom()も参照してください 。

void QTextStream::setIntegerBase(int base)

整数の基数を、読み取りおよび数値生成の両方において `base` に設定します。`base ` の値は、2(2進数)、8(8進数)、10(10進数)、または16(16進数)のいずれかです。base が0の場合、QTextStream はストリーム上のデータを解析して基数を検出しようとします。数値を生成する際、QTextStream は、基数が明示的に設定されていない限り、基数が10であると仮定します。

integerBase()、QString::number()、およびsetNumberFlags()も参照してください 。

void QTextStream::setLocale(const QLocale &locale)

このストリームのロケールを `locale` に設定します。指定されたロケールは、数値とその文字列表現間の変換に使用されます。

デフォルトのロケールは C ですが、これは特殊なケースであり、下位互換性を維持するため、千の位区切り記号は使用されません。

locale()も参照してください 。

void QTextStream::setNumberFlags(QTextStream::NumberFlags flags)

現在の数値フラグを `flags` に設定します。`flags ` は、NumberFlag 列挙型のフラグのセットであり、生成されるコードの書式設定に関するオプション(例:数値の基数や符号を常に記述するかどうかなど)を定義しています。

numberFlags()、setIntegerBase()、およびsetRealNumberNotation()も参照してください 。

void QTextStream::setPadChar(QChar ch)

パッド文字をch に設定します。デフォルト値はASCIIのスペース文字(' ')またはQChar (0x20)です。この文字は、テキストを生成する際にフィールドの空白を埋めるために使用されます。

例:

QString s;
QTextStream out(&s);
out.setFieldWidth(10);
out.setFieldAlignment(QTextStream::AlignCenter);
out.setPadChar('-');
out << "Qt" << "rocks!";

文字列「s 」には以下が含まれます:

----Qt------rocks!--

padChar() およびsetFieldWidth()も参照してください 。

void QTextStream::setRealNumberNotation(QTextStream::RealNumberNotation notation)

実数の表記をnotation (SmartNotation,FixedNotation,ScientificNotation) に設定します。QTextStream は、数値の読み取りや生成を行う際、この値を使用して実数の書式を判別します。

realNumberNotation()、setRealNumberPrecision()、setNumberFlags()、およびsetIntegerBase()も参照してください 。

void QTextStream::setRealNumberPrecision(int precision)

実数の精度をprecision に設定します。この値は、QTextStream が実数を生成する際(FixedNotation 、ScientificNotation )に出力する小数点以下の桁数、あるいは有効桁数の最大数(SmartNotation )を表します。

精度に負の値を指定することはできません。デフォルト値は 6 です。

realNumberPrecision() およびsetRealNumberNotation()も参照してください 。

void QTextStream::setStatus(QTextStream::Status status)

テキストストリームのステータスを、指定されたstatus に設定します。

resetStatus() が呼び出されるまで、その後の setStatus() への呼び出しは無視されます。

Status 、status()、およびresetStatus()も参照してください 。

void QTextStream::setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)

指定されたopenMode を使用して、現在の文字列をstring に設定します。すでにデバイスが割り当てられている場合、QTextStream は、それを置き換える前にflush()を呼び出します。

string() およびsetDevice()も参照してください 。

void QTextStream::skipWhiteSpace()

ストリームから空白文字を読み取り、非空白文字が検出されるか、atEnd() が true を返すまで、空白文字を破棄します。この関数は、ストリームを 1 文字ずつ読み取る際に役立ちます。

空白文字とは、QChar::isSpace() がtrue を返すすべての文字を指します。

operator>>()も参照してください 。

QTextStream::Status QTextStream::status() const

テキストストリームのステータスを返します。

QTextStream::Status 、setStatus()、およびresetStatus()も参照してください 。

QString *QTextStream::string() const

QTextStream に割り当てられている現在の文字列を返します。文字列が割り当てられていない場合は、nullptr を返します。

setString() およびdevice()も参照してください 。

[explicit noexcept, since 6.10] QTextStream::operator bool() const

このストリームにエラーがないかどうかを返します(status() はOk を返します)。

この関数は Qt 6.10 で導入されました。

QTextStream &QTextStream::operator<<(QChar c)

文字列 `c ` をストリームに書き込み、その後、QTextStream への参照を返します。

setFieldWidth()も参照してください 。

QTextStream &QTextStream::operator<<(const QString &string)

文字列「string 」をストリームに書き込み、QTextStream への参照を返します。文字列は、ストリームに書き込まれる前に、指定されたエンコーディング(デフォルトはUTF-8)を使用してエンコードされます。

setFieldWidth() およびsetEncoding()も参照してください 。

QTextStream &QTextStream::operator<<(float f)

実数 `f ` をストリームに書き込み、その後 `QTextStream` への参照を返します。デフォルトでは、QTextStream は `SmartNotation` を使用して、最大 6 桁の精度で格納します。実数に対して `QTextStream ` が使用する文字列表現は、setRealNumberNotation()、setRealNumberPrecision()、およびsetNumberFlags() を呼び出すことで変更できます。

setFieldWidth()、setRealNumberNotation()、setRealNumberPrecision()、およびsetNumberFlags()も参照してください 。

QTextStream &QTextStream::operator<<(short i)

整数i をストリームに書き込み、QTextStream への参照を返します。デフォルトでは、数値は10進数形式で格納されますが、setIntegerBase()を呼び出すことで基数を設定することもできます。

setFieldWidth() およびsetNumberFlags()も参照してください 。

QTextStream &QTextStream::operator<<(QLatin1StringView string)

ストリームに `string ` を書き込み、QTextStream への参照を返します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(QStringView string)

ストリームに `string ` を書き込み、QTextStream への参照を返します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(char c)

c をASCIIからQChar に変換し、それをストリームに書き込みます。

これはオーバーロードされた関数です。

[since 6.3.1] QTextStream &QTextStream::operator<<(char16_t c)

Unicode文字「c 」をストリームに書き込み、QTextStream への参照を返します。

これはオーバーロードされた関数です。

この関数は Qt 6.3.1 で導入されました。

QTextStream &QTextStream::operator<<(const QByteArray &array)

ストリームに `array ` を書き込みます。array の内容は、QString::fromUtf8() によって変換されます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(const char *string)

string が指す定数文字列をストリームに書き込みます。string は UTF-8 エンコーディングであるとみなされます。この演算子は、定数文字列データを扱う際に便利です。例:

QTextStream out(stdout);
out << "Qt rocks!" << Qt::endl;

警告:QTextStream は、string が '\0' 文字で終了する文字列を指していると想定しています。終了文字 '\0' がない場合、アプリケーションがクラッシュする可能性があります。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(const void *ptr)

ptr を、基数を指定した16進数としてストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(double f)

double型のf をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(int i)

符号付き整数 `i ` をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(long i)

符号付きlong型のi をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(qlonglong i)

qlonglong型のi をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(qulonglong i)

qulonglong型のi をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(unsigned int i)

unsigned int型のi をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(unsigned long i)

i (符号なしlong型)をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator<<(unsigned short i)

unsigned short型のi をストリームに書き込みます。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(QChar &c)

ストリームから 1 文字を読み取り、それを `c` に格納します。`QTextStream` への参照を返すため、複数の演算子をネストして使用することができます。例:

QTextStream in(file);
QChar ch1, ch2, ch3;
in >> ch1 >> ch2 >> ch3;

空白文字はスキップされません。

QTextStream &QTextStream::operator>>(QString &str)

ストリームから単語を読み取り、それをstr に格納した後、ストリームへの参照を返します。単語は空白文字で区切られています(つまり、QChar::isSpace()がtrue を返すすべての文字で区切られています)。

先頭の空白文字は無視されます。

QTextStream &QTextStream::operator>>(float &f)

ストリームから実数を読み取り、f に格納した後、QTextStream への参照を返します。数値は適切な型にキャストされます。ストリーム上で実数が検出されない場合、f は0.0に設定されます。

特別な例外として、QTextStream は、NANおよびINFのfloat型またはdouble型を表す文字列「nan」および「inf」を許可しています。

先頭の空白は無視されます。

QTextStream &QTextStream::operator>>(short &i)

ストリームから整数を読み取り、i に格納した後、QTextStream への参照を返します。数値は格納される前に適切な型にキャストされます。ストリーム上で数値が検出されなかった場合、i は 0 に設定されます。

デフォルトでは、QTextStream は以下の規則に従って数値の基数を検出しようとします:

接頭辞基数
"0b" または "0B"2 (2進数)
「0」の後に「0~7」が続く場合8(8進数)
それ以外の場合は「0」10(10進数)
「0x」または「0X」16(16進数)
「1」から「9」10(10進数)

setIntegerBase() を呼び出すことで、整数の基数を明示的に指定できます。これにより自動検出が無効になり、QTextStream の処理がわずかに高速化されます。

先頭の空白は無視されます。

QTextStream &QTextStream::operator>>(QByteArray &array)

単語をUTF-8に変換し、array に格納します。

これはオーバーロードされた関数です。

QString::toLatin1()も参照してください 。

QTextStream &QTextStream::operator>>(char &c)

ストリームから1文字を読み取り、c に格納します。ストリームからの文字は、格納される前にISO-8859-1に変換されます。

これはオーバーロードされた関数です。

QChar::toLatin1()も参照してください 。

[since 6.4] QTextStream &QTextStream::operator>>(char16_t &c)

ストリームから1文字を読み取り、c に格納します。

これはオーバーロードされた関数です。

この関数はQt 6.4で導入されました。

QTextStream &QTextStream::operator>>(double &f)

実数を double型の変数f に格納します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(int &i)

整数を符号付きint型のi に格納します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(long &i)

整数を符号付きlong型のi に格納します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(qlonglong &i)

整数を qlonglong 型の変数 `i` に格納します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(qulonglong &i)

整数をi 型のqulonglongに格納します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(unsigned int &i)

整数を、unsigned int型のi に格納します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(unsigned long &i)

整数を、unsigned long型のi に格納します。

これはオーバーロードされた関数です。

QTextStream &QTextStream::operator>>(unsigned short &i)

整数を、符号なしshort型のi に格納します。

これはオーバーロードされた関数です。

関連する非メンバー関数

QTextStreamManipulator qSetFieldWidth(int width)

QTextStream::setFieldWidth (width )と同等です。

QTextStreamManipulator qSetPadChar(QChar ch)

QTextStream::setPadChar (ch )と同等です。

QTextStreamManipulator qSetRealNumberPrecision(int precision)

QTextStream::setRealNumberPrecision (precision )と同等です。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.