C++ファイルストリームI/O操作:fstreamクラス
2572 ワード
一.概要
「ファイル」とは、一般に、外部メディアに存在するデータの集合を指し、ディスク、光ディスク、Uディスクなどの外部メディアにファイル形式で格納され、オペレーティングシステムがファイル単位でデータを管理する.ユーザーにとって、よく使われるファイルには、プログラムファイル、データファイルの2つの種類があります.プログラムの実行中に、いくつかのデータをディスクに出力して保存する必要があり、後で必要に応じてディスクからコンピュータメモリに入力する必要があります.このディスクファイルはデータファイルであり、fstreamクラスの操作オブジェクトはこのデータファイルです.
fstreamクラスはC++コンパイルシステムが提供するデータファイルを対象とした入出力操作のクラスライブラリであり、ファイルI/Oクラスとも呼ばれ、fstreamクラスは標準I/Oクラスiostreamの派生クラスである.
二.はじめに
手順1:ヘッダファイル#includeの追加
手順2:fstreamクラスのオブジェクトを定義する
フォーマット:ファイルフロータイプファイルフローオブジェクト名
手順3:操作するファイルを開く
書式:ファイルフローオブジェクト名.Open(ファイルオブジェクト、開く方法);
手順4:ファイルの読み書きポインタの位置を設定する
書式:ファイルフローオブジェクト名.tellg/p();//ファイルポインタの現在位置の取得
書式:ファイルフローオブジェクト名.seekg/p(絶対位置値);//ファイルポインタを指定位置に移動
書式:ファイルフローオブジェクト名.seekg/p(変位量、参照位置値);//参照位置ベース移動変位量
手順5:ファイルの読み書き
書式:ファイルフローオブジェクト名.get/put(バイト変数);
書式:ファイルフローオブジェクト名.read/write(データアドレス、データ長);
「ファイル」とは、一般に、外部メディアに存在するデータの集合を指し、ディスク、光ディスク、Uディスクなどの外部メディアにファイル形式で格納され、オペレーティングシステムがファイル単位でデータを管理する.ユーザーにとって、よく使われるファイルには、プログラムファイル、データファイルの2つの種類があります.プログラムの実行中に、いくつかのデータをディスクに出力して保存する必要があり、後で必要に応じてディスクからコンピュータメモリに入力する必要があります.このディスクファイルはデータファイルであり、fstreamクラスの操作オブジェクトはこのデータファイルです.
fstreamクラスはC++コンパイルシステムが提供するデータファイルを対象とした入出力操作のクラスライブラリであり、ファイルI/Oクラスとも呼ばれ、fstreamクラスは標準I/Oクラスiostreamの派生クラスである.
二.はじめに
手順1:ヘッダファイル#includeの追加
手順2:fstreamクラスのオブジェクトを定義する
フォーマット:ファイルフロータイプファイルフローオブジェクト名
// ,
ifstream infile;
// ,
ofstream outfile;
// / ,
fstream iofile;
手順3:操作するファイルを開く
書式:ファイルフローオブジェクト名.Open(ファイルオブジェクト、開く方法);
// FileName , txtfile.txt、wavfile.wav
iofile.open( "FileName", );
// FilePath , D:\\txtfile.txt。 :
iofile.open( "FilePath", );
// , 。
iofile.open( , ios::in );
// , 。 ,
iofile.open( , ios::out );
// ,
iofile.open( , ios::in | ios::out );
// , ,
iofile.open( , ios::out | ios::app );
// , ASCII
iofile.open( , ios::out | ios::binary );
手順4:ファイルの読み書きポインタの位置を設定する
書式:ファイルフローオブジェクト名.tellg/p();//ファイルポインタの現在位置の取得
書式:ファイルフローオブジェクト名.seekg/p(絶対位置値);//ファイルポインタを指定位置に移動
書式:ファイルフローオブジェクト名.seekg/p(変位量、参照位置値);//参照位置ベース移動変位量
// / 100
iofile.seekg/p( 100 );
// / 50
iofile.seekg/p( 50, ios::cur );
// / 50
iofile.seekg/p( -50, ios::cur );
// / 50
iofile.seekg/p( -50, ios::end );
手順5:ファイルの読み書き
書式:ファイルフローオブジェクト名.get/put(バイト変数);
書式:ファイルフローオブジェクト名.read/write(データアドレス、データ長);
// 1 ch
iofile.get( ch );
// ch( )
iofile.put( ch );
// 100 Rbuf iofile.read( (char*)&Rbuf, 100 ); // Wbuf 100 iofile.write( (char*)&Wbuf, 100 );
手順6:操作を終了し、ファイルを閉じる
書式:ファイルフローオブジェクト名.close();
三.ステップアップ
しばらく
四.コメント
【1】xxfile.eof()関数は、ファイルの読み書きがファイルの末尾に達するかどうかを判断する際に、オーバーフローファイルの末尾を操作しないでください.そうしないとxxfileを使用します.seekg/p()関数でファイルポインタを調整するとエラーが発生します.