図1に示すように、ファイル入力および出力ストリーム
ファイルは、デフォルトの標準装備などのデバイスモニタ画面やキーボードなどではありませんので、としてcoutのが好きではありませんグローバルオブジェクトは、事前に定義されているので、我々はする必要があり、独自のオブジェクトクラスを定義します。
- istreamクラスから派生さはifstreamクラスは、ディスクファイルからの入力をサポートします。
- ディスク・ファイルへの出力をサポートするためのostreamクラスから派生しofstreamのクラス。
- ディスクファイルへの入出力をサポートするために、iostreamクラスから派生したクラスのfstream、。
ファイル原理
ファイルを開くには、持っているファイルポインタそれぞれが現在の位置ファイルポインタのすべてを読み書き、I / Oモードで指定されたポインタの初期位置を。それぞれのバイト、下位バイトのポインタを読み込みます。ときに最後にファイルポインタは、遭遇するファイルの終わりをEOF(ファイルの終わりが-1の値であり、1つのバイトでもある)、次にストリームオブジェクト値EOFメンバ関数がゼロでない(通常は1に設定)、それはファイルが終わったことを示しています。
閉じるストリーム・ファイルが解放されると、ディスクファイルが実際に関連付けられているファイル、オリジナル作品も無効に提供されるので、あなたは、ファイルストリームによってファイルへの入力または出力することはできません
ファイルタイプ:1、ASCIIファイル:ASCIIコード形式のファイルを一つの文字を格納するためのデータ、すなわちバイトを格納している各バイトは、このファイルはASCIIファイル(また、文字ファイルとして知られている)です。
2.ファイルを開きます。
実施例1:ファイル出力ストリーム、ストリームオブジェクトファイル、ファイルは、クラスofstreamののコンストラクタによって開かれます
フォーマット:ofstreamの(ディスク・ファイル名、 入力および出力)。
ofstreamのは、0(偽)である場合、それはオープン操作が失敗した意味します
如:ofstreamのをFOUT1(fnameは、IOS ::アウト)。
fstreamのFOUT(FNAME、IOS ::アウト|イオス::で)次のような方法、|入出力が「または」演算子(「」)を使用することができる組み合わせて使用することができます
実施例2:入出力ストリームオブジェクトファイル、ストリームオブジェクトファイル、ファイルが開い関数で開くことができ
フォーマット:ファイルストリームオブジェクト.open(ディスクファイル名、 入力および出力)。
戻り値:0(偽)、オープン操作に失敗しました
如:fout.open(fnameは、IOS ::アウト)
ファイルを閉じます。
)(outfile.close;:ディスクファイルの読み書きがオープン操作が完了すると、ファイルは、次のような閉じなければなりません
モード1:
#include <iostreamの> 使用して 名前空間STD; の#include <fstreamの> ボイドメイン() { CHAR * FNAME = " D:/VS_programs/day_04/a.txt " ; // ofstreamのFOUT(FNAME、IOSの:: OUT); / / デフォルト値をライトバックしない FOUT(FNAME)ofstreamの; // 出力ストリームと関連付けられたオブジェクトファイルビルド FOUT << 、 " こんにちは.... 111 " << ENDLを、 FOUT << 、 " こんにちは.... 222 " < < てendl; fout.close(); // ファイル読み込み // はifstream FIN(fnameは、イオス::で)。 // デフォルト値の書き戻していない はifstreamのFIN(FNAMEを); //は、関連付けられた入力オブジェクトとファイルのストリーム作成 チャーCHを、 一方(FIN。GET (CH)) { COUT << CH; } fin.close(); システム(" PAUSE " ); }
オプション2:
ofstreamのOUT ; // 出力ストリームポインタOUT はifstream で ; // 入力ストリームポインタ OUT .Open(" file.txtを"); // FILE.TXTファイル出力をオープンするように wrtie_file(OUT); // WRITE_FILEユーザファイルに出力ポインタを操作するための機能を書き込む アウト)(.closeを; // 完了した後の操作は、ストリームポインタをシャットダウンする必要があります。それ以外の場合は、入力ストリームポインタなどの他のストリームとファイルポインタ開くことができません // 近い呼び出すことはありません()関数を、あなたは、ファイルへのアクセスから他のストリームポインタまたは他のプロセスを作ることができない で .open(「file.txtは」); // へFILE.TXTファイルを開く方法入力 READ_FILEを(中); // READ_FILEユーザーがファイルへのポインタを操作するための機能を記述することである 中)(.close; // 入力ストリームへのポインタを閉じる / * -----------一種と言います道------------- * / のように: ofstreamのうち(「file.txtなどを」);また、オープンfile.txtなどを意味し、ストリームポインタを返されたが、彼は暗黙のうちに呼び出しopen関数です、コンストラクタofstreamのクラスがオープン関数を呼び出す必要がありますので、 同じ方法: はifstream で(「file.txtは」 ;それははifstreamに相当)で、 中 .open(「file.txtは」);
成功すると、ファイルの終わりかどうかを開くかどうかを決定する3、
(1 )オープンが成功した場合 ofstreamのをOUT(" file.txtを" ); IF(!OUT .is_open) { COUTが << "フェールオープン" << ENDL; } //は、同様にこの方法ではifstream決定されます。 (2 )ファイルの末尾に場合 はifstream で(「file.txtは」); しばらく(!で.EOF) { 楽しい(); // ファイルが楽しい()関数の実装で、最後に到達していない場合 }
4、テキストファイルのサイズへのアクセス
書式#include <iostreamの> の#include <fstreamの> 使用して 名前空間はstdを、 ボイド get_size(はifstream&中) { 長いB、E。 B = で.tellg(); で .seekg(0 、IOS ::エンド)。 E = tellg()。 長いサイズ= E- B。 裁判所未満 << " サイズ= " <<サイズ<< てendl; } int型のmain() { はifstream で(" file.txtを" )。 get_size(で); で.close(); リターン 0 ; }
図5に示すように、ポインタと設定ストリームを得るために
ifstreamは、次の要素を指すポインタを取得読み取るべき
ofstreamのが書き込まれるべき次の位置へのプットポインタ点を有し
得るポインタを返すために使用されるtellg()とtellp()の場合、ポインタの位置を入れ、そして入力パラメータを必要としない
seekgの()とseekp()を取得ポインタの位置を設定し、第2の位置まで、ポインタ2つのパラメータ、第1の変位量のいずれかのものを置くために使用されます。
seekg(; 0、イオス:: BEG) //取得ポインタの位置を設定し、ファイル位置0位置の先頭から
参考ブログます。https://blog.csdn.net/u014453898/article/details/54565974