QTextStream Class

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

Header: #include <QTextStream>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: 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)
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
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)
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 は、QIODeviceQByteArrayQString を操作することができます。 QTextStream のストリーミング演算子を使用すると、単語、行、数値の読み書きを便利に行うことができます。テキストを生成するために、QTextStream はフィールドのパディングとアラインメント、および数値のフォーマット・オプションをサポートしています。例

QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
    QTextStream out(&data);
    out << "Result: " << qSetFieldWidth(10) << 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() は、読み込むべきデータが残っていない場合に真を返します。flush() を呼び出すと、QTextStream は書き込みバッファからすべてのデータをデバイスに空書き込みし、デバイス上でflush() を呼び出します。

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

テキストファイルの読み込み時に QTextStream を使用する一般的な方法は 3 つあります:

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

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

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

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

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

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

QTextStream は、テキストを生成するための多くのフォーマット・オプションをサポートしています。setFieldWidth() およびsetPadChar() を呼び出すと、フィールド幅とパッド文字を設定できます。setFieldAlignment() を使用して、各フィールド内のアラインメントを設定します。実数の場合は、setRealNumberNotation() およびsetRealNumberPrecision() を呼び出して、生成される数値の表記 (SmartNotation,ScientificNotation,FixedNotation) と桁数単位の精度を設定します。また、setNumberFlags() を使用することで、追加の数値書式オプションも利用できる。

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

さらに Qt では、qSetFieldWidth()、qSetPadChar()、qSetRealNumberPrecision() の 3 つのグローバル・マニピュレーターを提供しています。

QDataStream,QIODevice,QFile,QBuffer,QTcpSocketも参照のこと

メンバ型ドキュメント

enum QTextStream::FieldAlignment

この列挙型は、フィールドがそれを占めるテキストよりも広い場合に、フィールド内のテキストをどのように整列させるかを指定する。

定数説明
QTextStream::AlignLeft0フィールドの右側を埋める。
QTextStream::AlignRight1フィールドの左側に寄せる。
QTextStream::AlignCenter2フィールドの両側を埋める
QTextStream::AlignAccountingStyle3AlignRightと同じ。ただし、数値の符号は左寄せになる。

setFieldAlignment()も参照

enum QTextStream::NumberFlag
flags QTextStream::NumberFlags

この enum は、整数、floats、doubles の出力に影響するさまざまなフラグを指定します。

定数説明
QTextStream::ShowBase0x1基数が 16 ("0x")、8 ("0")、または 2 ("0b") の場合に、基数をプレフィックスとして表示します。
QTextStream::ForcePoint0x2小数点がない場合でも、数値には常に小数点区切り記号を付ける。
QTextStream::ForceSign0x4正の数であっても、常に符号を入れる。
QTextStream::UppercaseBase0x8基本接頭辞には大文字を使う("0X"、"0B")。
QTextStream::UppercaseDigits0x1010桁から35桁の数字を表すには、小文字ではなく大文字を使う。

NumberFlags型はQFlags<NumberFlag>のtypedefである。NumberFlagの値のORの組み合わせを格納する。

setNumberFlags()も参照のこと

enum QTextStream::RealNumberNotation

この列挙型は、floatdouble を文字列として表現する際に使用する表記を指定します。

定数説明
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)

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

このコンストラクタは、一般的な FILE ベースの入出力ストリームである stdin、stdout、stderr を直接操作する場合に便利です。例

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

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

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

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

openMode を使用してオープン・モードを定義し、string で動作する QTextStream を構築します。

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

openMode を使用してオープン・モードを定義し、array を操作する QTextStream を構築します。配列は、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 エンコーディング使用時に UTF BOM(Byte Order Mark)を生成するようにQTextStream が設定されている場合はtrue を返し、そうでない場合はfalse を返す。そうでない場合は を返します。UTF BOM 生成はデフォルトで false に設定されています。

setGenerateByteOrderMark()も参照

int QTextStream::integerBase() const

整数の現在の基数を返します。0 は、読み込み時に基数を検出することを意味し、 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 "または" \rn")がないので、QString::trimmed()を呼び出す必要はない。

ストリームがファイルの最後まで読み込まれた場合、readLine() は NULLQString を返します。文字列の場合、またはそれをサポートするデバイスの場合は、atEnd() を使用してストリームの終わりを明示的にテストできます。

readAll() およびQIODevice::readLine()も参照

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

ストリームから1行のテキストをline に読み込みます。linenullptr の場合、読み込んだ行は格納されません。

許容される行の最大長はmaxlen に設定されます。 ストリームにこれより長い行がある場合、行はmaxlen 文字以降で分割され、分割されて返されます。

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

結果の行には行末文字("˶n "または"˶rn")がないので、QString::trimmed ()を呼び出す必要はない。

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

ストリームがファイルの最後まで読み込まれたか、エラーが発生した場合はfalse を返し、そうでない場合はtrue を返す。呼び出し前のline の内容は、どのような場合でも破棄される。

readAll() およびQIODevice::readLine()も参照のこと

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::Statusstatus ()、setStatus)も参照

bool QTextStream::seek(qint64 pos)

デバイス内の位置pos をシークする。成功するとtrue を返し、失敗するとfalse を返す。

void QTextStream::setAutoDetectUnicode(bool enabled)

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

この関数はsetEncoding() と併用することもできます。エンコーディングを UTF-8 に設定してから UTF-16 の検出を有効にするのが一般的です。

autoDetectUnicode() およびsetEncoding()も参照

void QTextStream::setDevice(QIODevice *device)

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

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

device() およびsetString()も参照

void QTextStream::setEncoding(QStringConverter::Encoding encoding)

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

QTextStream が文字列を操作する場合、この関数は何もしない。

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

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 が真で UTF エンコーディングが使用されている場合、QTextStream は、データがデバイスに書き込まれる前に BOM(バイト・オーダー・マーク)を挿入します。generate が偽の場合、BOM は挿入されません。この関数は、データが書き込まれる前に呼び出されなければならない。そうでない場合は、何もしません。

generateByteOrderMark() およびbom()も参照のこと

void QTextStream::setIntegerBase(int base)

base base は、2(2進数)、8(8進数)、10(10進数)、16(16進数)のいずれかである。 が0の場合、 は、ストリーム上のデータを検査することで、ベースを検出しようとする。数値を生成する場合、 は、基数が明示的に設定されていない限り、基数が10であると仮定する。base QTextStream QTextStream

integerBase()、QString::number()、setNumberFlags()も参照

void QTextStream::setLocale(const QLocale &locale)

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

デフォルトのロケールは C で、これは特殊なケースです。 後方互換性の理由から、千グループ区切り文字は使用されません。

locale()も参照

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

現在の数値フラグをflags に設定する。flagsNumberFlag enum のフラグの集合で、生成されるコードの書式に関するオプション (例えば、数値の基数や符号を常に記述するかどうかなど) を記述する。

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 に設定する。

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

Statusstatus()、およびresetStatus()も参照

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

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

string() およびsetDevice()も参照のこと

void QTextStream::skipWhiteSpace()

非空白文字が検出されるか、atEnd() が真を返すまで、ストリームから空白文字を読み込んで破棄します。この関数は、ストリームを 1 文字ずつ読み込む場合に便利です。

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

operator>>()も参照

QTextStream::Status QTextStream::status() const

テキスト・ストリームの状態を返します。

QTextStream::StatussetStatus()、およびresetStatus()参照。

QString *QTextStream::string() const

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

setString() およびdevice() も参照

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桁の精度で格納されます。setRealNumberNotation()、setRealNumberPrecision()、setNumberFlags() を呼び出すことで、QTextStream が実数に使用するテキスト表現を変更できる。

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)

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

二重f をストリームに書き込みます。

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

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

符号付き inti をストリームに書き込みます。

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

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

符号付き longi をストリームに書き込みます。

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

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

qlonglongi をストリームに書き込みます。

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

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

qulonglongi をストリームに書き込みます。

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

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

unsigned inti をストリームに書き込みます。

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

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

符号なし longi をストリームに書き込みます。

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

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

符号なしshorti をストリームに書き込む。

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

ストリームから文字を読み取り、それを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 "という文字列でNANとINFの浮動小数点数または倍数を表すことができる。

先頭の空白文字はスキップされる。

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

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

デフォルトでは、QTextStream は、以下のルールを使用して、数値のベースを検出しようとします:

接頭辞基数
"0b "または "0B"2(バイナリ)
"0 "に続く "0-7"8(8進数)
それ以外は "0"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)

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

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

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

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

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

単語を UTF-8 に変換し、' \0'文字で終端されるc に格納します。単語がない場合は、' \0'文字だけが格納されます。

警告QTextStream は、c がワードを保持するのに十分なスペースを持つバッファを指していると仮定します。バッファが小さすぎると、アプリケーションがクラッシュする可能性があります。n QCharsからなる単語の場合、バッファは少なくとも3*n+1 文字の長さが必要です。

可能であれば、代わりにQByteArray 演算子を使用してください。

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

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

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

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

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

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

実数を doublef に格納します。

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

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

整数を符号付き inti に格納します。

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

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

整数を符号付き longi に格納します。

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

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

整数を qlonglongi に格納します。

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

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

整数を qulonglongi に格納します。

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

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

整数を unsigned inti に格納する。

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

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

符号なし longi に整数を格納する。

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

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

符号なし shorti に整数を格納します。

関連する非メンバー

QTextStreamManipulator qSetFieldWidth(int width)

QTextStream::setFieldWidth(width) と同等。

QTextStreamManipulator qSetPadChar(QChar ch)

QTextStream::setPadChar(ch) と同等。

QTextStreamManipulator qSetRealNumberPrecision(int precision)

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

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。