ファイルおよびデータストリーム関数
QIODevice クラスは、 Qt CoreQIODevice は、データブロックの読み書きをサポートするデバイスに対して、共通の実装と抽象インターフェースの両方を提供します。デバイスとしては、メモリバッファ、ファイル、またはデータストリームが挙げられます。
QFile のような一部のサブクラスは、データの中間保存にメモリバッファを使用して実装されています。これにより、読み書き操作が削減され、プログラムの処理速度が向上します。バッファリングにより、getChar() やputChar() といった関数は、デバイス自体に対して直接操作を行うのではなく、メモリバッファ上で処理を行えるため、高速に実行されます。
QFile クラスは、ファイルからの読み取りおよび書き込みを行う関数を提供します。QFile は単独で使用することもできますが、QTextStream やQDataStream と組み合わせて使用するとより便利です。
QBuffer これにより、QIODevice インターフェースを使用してQByteArray にアクセスできます。QByteArray は、標準的なランダムアクセスファイルと同様に扱われます。例:
QBuffer buffer;
char ch;
buffer.open(QBuffer::ReadWrite);
buffer.write("Qt rocks!");
buffer.seek(0);
buffer.getChar(&ch); // ch == 'Q'
buffer.getChar(&ch); // ch == 't'
buffer.getChar(&ch); // ch == ' '
buffer.getChar(&ch); // ch == 'r'open() を呼び出してバッファを開きます。その後、write() またはputChar() を呼び出してバッファに書き込み、read()、readLine()、readAll()、またはgetChar() を呼び出してバッファから読み込みます。size() はバッファの現在のサイズを返し、seek() を呼び出すことでバッファ内の任意の位置にシークすることができます。 バッファへのアクセスが終了したら、close() を呼び出します。
QDataStream クラスは、バイナリデータをQIODevice にシリアル化します。データストリームとは、ホストコンピュータのオペレーティングシステム、CPU、またはバイト順に100%依存しない、エンコードされた情報のバイナリストリームです。たとえば、Windows上のPCで書き込まれたデータストリームは、Solarisを実行しているSun SPARCで読み取ることができます。 また、データストリームを使用して、エンコードされていない生のバイナリデータの読み書きを行うこともできます。
QDataStream がシリアル化できるデータ型に関する詳細については、「Qtデータ型のシリアル化」を参照してください。
QTextStream クラスは、テキストの読み書きを行うための便利なインターフェースを提供します。QTextStream は、QIODevice 、QByteArray 、またはQString で動作します。QTextStream のストリーミング演算子を使用すると、単語、行、数値を簡単に読み書きできます。また、QTextStream を使用して、コンソールからの入力を読み取り、コンソールへ出力を書き出すことも一般的です。
テキストファイルを読み込む際に `QTextStream ` を使用する一般的な方法は、主に3つあります:
- readLine() またはreadAll() を呼び出して、チャンク単位で処理する。
- 単語単位での読み込み。QTextStream は、QString、QByteArray、およびchar*バッファへのストリーム入力に対応しています。単語はスペースで区切られ、先頭の空白文字は自動的にスキップされます。
- 文字単位で、QChar やchar型へのストリーム入力を行います。この方法は、文字エンコーディングや改行の定義に依存せず、ファイルの解析時に入力を便利に処理するためによく使用されます。空白をスキップするには、skipWhiteSpace()を呼び出します。
QByteArray は、生のバイト(\0 を含む)と、従来の 8 ビットの '\0' で終了する文字列の両方を格納するために使用できます。QByteArray を使用することは、const char * を使用するよりもはるかに便利です。これにより、データの後に必ず '\0' 終端文字が続くことが保証され、暗黙的に共有されるクラス(コピーオンライト)が使用されるため、メモリ使用量が削減され、データの不要なコピーが回避されます。
QByteArray に加え、Qtでは文字列データを格納するためのQString クラスも提供しています。 ほとんどの用途では、QString が最も適切なクラスです。これは16ビットのUnicode文字を格納します。ただし、生のバイナリデータを格納する必要がある場合や、メモリの節約が極めて重要な場合(たとえば、Qt for Embedded Linuxなど)には、QByteArray を使用することをお勧めします。
© 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.