C++ファイルストリームI/O操作:fstreamクラス

2572 ワード

一.概要
「ファイル」とは、一般に、外部メディアに存在するデータの集合を指し、ディスク、光ディスク、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()関数でファイルポインタを調整するとエラーが発生します.