Cplusplus-cpp-files-streams
C ++ファイルとストリーム
これまで、 iostream 標準ライブラリを使用してきました。これは、それぞれ標準入力からの読み取りと標準出力への書き込みのための cin および cout メソッドを提供します。
このチュートリアルでは、ファイルの読み取りおよび書き込み方法について説明します。 これには、3つの新しいデータ型を定義する fstream という別の標準C ++ライブラリが必要です-
Sr.No | Data Type & Description |
---|---|
1 |
ofstream このデータ型は出力ファイルストリームを表し、ファイルの作成およびファイルへの情報の書き込みに使用されます。 |
2 |
ifstream このデータ型は入力ファイルストリームを表し、ファイルから情報を読み取るために使用されます。 |
3 |
fstream このデータ型は一般にファイルストリームを表し、ofstreamとifstreamの両方の機能を備えています。つまり、ファイルを作成し、ファイルに情報を書き込み、ファイルから情報を読み取ることができます。 |
C でファイル処理を実行するには、ヘッダーファイル<iostream>および<fstream>をC ソースファイルに含める必要があります。
ファイルを開く
ファイルは、読み取りまたは書き込みを行う前に開く必要があります。 ofstream または fstream オブジェクトを使用して、ファイルを書き込み用に開くことができます。 また、ifstreamオブジェクトは、読み取り専用のファイルを開くために使用されます。
以下は、fstream、ifstream、およびofstreamオブジェクトのメンバーであるopen()関数の標準構文です。
ここで、最初の引数は開くファイルの名前と場所を指定し、* open()*メンバー関数の2番目の引数はファイルを開くモードを定義します。
Sr.No | Mode Flag & Description |
---|---|
1 |
ios::app 追加モード。 そのファイルへのすべての出力は、末尾に追加されます。 |
2 |
ios::ate 出力用のファイルを開き、読み取り/書き込みコントロールをファイルの最後に移動します。 |
3 |
ios::in 読み取り用にファイルを開きます。 |
4 |
ios::out 書き込み用にファイルを開きます。 |
5 |
ios::trunc ファイルが既に存在する場合、ファイルを開く前にその内容は切り捨てられます。 |
これらの値を2つ以上組み合わせるには、* OR *を組み合わせます。 たとえば、書き込みモードでファイルを開き、既に存在する場合に切り捨てたい場合は、次の構文になります-
同様に、次のように目的の読み取りおよび書き込み用にファイルを開くことができます-
ファイルを閉じる
C ++プログラムが終了すると、すべてのストリームが自動的にフラッシュされ、割り当てられたすべてのメモリが解放され、開いているすべてのファイルが閉じられます。 ただし、プログラマーは、プログラムを終了する前に、開いているすべてのファイルを閉じることをお勧めします。
以下は、fstream、ifstream、およびofstreamオブジェクトのメンバーであるclose()関数の標準構文です。
ファイルへの書き込み
C ++プログラミングの実行中に、ストリーム挿入演算子(<<)を使用してプログラムからファイルに情報を書き込みます。その演算子を使用して画面に情報を出力します。 唯一の違いは、 cout オブジェクトの代わりに ofstream または fstream オブジェクトを使用することです。
ファイルからの読み取り
ストリーム抽出演算子(>>)を使用して、キーボードから情報を入力するのと同じように、ファイルから情報をプログラムに読み込みます。 唯一の違いは、 cin オブジェクトの代わりに ifstream または fstream オブジェクトを使用することです。
読み取りおよび書き込みの例
以下は、ファイルを読み取りおよび書き込みモードで開くC ++プログラムです。 ユーザーが入力した情報をafile.datという名前のファイルに書き込んだ後、プログラムはファイルから情報を読み取り、画面に出力します-
上記のコードがコンパイルおよび実行されると、次のサンプル入力および出力が生成されます-
上記の例では、外部から行を読み取るgetline()関数や、前のreadステートメントで残った余分な文字を無視するignore()関数など、cinオブジェクトの追加関数を使用します。
ファイル位置ポインター
- seekgとseekpの引数は通常、長整数です。 シークの方向を示すために、2番目の引数を指定できます。 シーク方向は、ストリームの先頭を基準とした位置決めの場合は *ios
- beg* (デフォルト)、ストリームの現在の位置を基準とした位置決めの場合は ios :: cur 、位置決めの場合は ios :: end になります。ストリームの終わりを基準にします。
ファイル位置ポインターは整数値で、ファイルの開始位置からのバイト数としてファイル内の位置を指定します。 「get」ファイル位置ポインタの配置のいくつかの例は次のとおりです-