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 |
- 継承メンバを含む全メンバ一覧
- QTextStream はInput/Output and NetworkingandClasses for String Data に属しています。
注意:このクラスの関数はすべてリエントラントです。
パブリック・タイプ
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 は、QIODevice 、QByteArray 、QString を操作することができます。 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::AlignLeft | 0 | フィールドの右側を埋める。 |
QTextStream::AlignRight | 1 | フィールドの左側に寄せる。 |
QTextStream::AlignCenter | 2 | フィールドの両側を埋める |
QTextStream::AlignAccountingStyle | 3 | AlignRightと同じ。ただし、数値の符号は左寄せになる。 |
setFieldAlignment()も参照 。
enum QTextStream::NumberFlag
flags QTextStream::NumberFlags
この enum は、整数、float
s、double
s の出力に影響するさまざまなフラグを指定します。
定数 | 値 | 説明 |
---|---|---|
QTextStream::ShowBase | 0x1 | 基数が 16 ("0x")、8 ("0")、または 2 ("0b") の場合に、基数をプレフィックスとして表示します。 |
QTextStream::ForcePoint | 0x2 | 小数点がない場合でも、数値には常に小数点区切り記号を付ける。 |
QTextStream::ForceSign | 0x4 | 正の数であっても、常に符号を入れる。 |
QTextStream::UppercaseBase | 0x8 | 基本接頭辞には大文字を使う("0X"、"0B")。 |
QTextStream::UppercaseDigits | 0x10 | 10桁から35桁の数字を表すには、小文字ではなく大文字を使う。 |
NumberFlags型はQFlags<NumberFlag>のtypedefである。NumberFlagの値のORの組み合わせを格納する。
setNumberFlags()も参照のこと 。
enum QTextStream::RealNumberNotation
この列挙型は、float
とdouble
を文字列として表現する際に使用する表記を指定します。
定数 | 値 | 説明 |
---|---|---|
QTextStream::ScientificNotation | 2 | 科学表記法 (printf() の%e フラグ)。 |
QTextStream::FixedNotation | 1 | 固定小数点表記 (printf() の%f フラグ)。 |
QTextStream::SmartNotation | 0 | 科学記法か固定小数点記法か、どちらを使うか (printf() の%g フラグ)。 |
setRealNumberNotation()も参照のこと 。
enum QTextStream::Status
この列挙型は、テキストストリームの現在の状態を記述する。
定数 | 値 | 説明 |
---|---|---|
QTextStream::Ok | 0 | テキストストリームは正常に動作している。 |
QTextStream::ReadPastEnd | 1 | テキスト・ストリームは、基礎となるデバイスのデータの終端を越えて読み込んだ。 |
QTextStream::ReadCorruptData | 2 | テキスト・ストリームが破損したデータを読み込んだ。 |
QTextStream::WriteFailed | 3 | テキスト・ストリームが下位デバイスに書き込めない。 |
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
を返します。
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 に読み込みます。line がnullptr
の場合、読み込んだ行は格納されません。
許容される行の最大長は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::Status 、status ()、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にリセットする。
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 に設定する。flags はNumberFlag 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()が呼び出されるまで無視される。
Status 、status()、および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::Status 、setStatus()、およびresetStatus()も 参照。
QString *QTextStream::string() const
QTextStream に割り当てられている現在の文字列、または文字列が割り当てられていない場合はnullptr
を返します。
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。