file input output operations c
C ++でのファイル入出力操作とファイルポインタ関数に関する研究。
リアルタイムプログラミングでは、標準の入出力デバイスでは対応できない大量のデータを処理します。したがって、データを保存するためにセカンダリストレージを利用する必要があります。セカンダリストレージを使用して、通常、データをファイルの形式で保存します。
テキスト形式またはバイナリ形式のストリームと呼ばれる一連のデータを使用して、ファイルからデータを読み取ったり、ファイルにデータを書き込んだりできます。 C ++のファイルに関連するさまざまな入出力およびその他の操作があります。このチュートリアルでは、さまざまなクラスを使用するファイルに関連するこれらの操作について説明します。
=> 独占的なC ++トレーニングチュートリアルシリーズについては、こちらをご覧ください。
学習内容:
アンドロイドのための最高のmp3ダウンロードアプリ
C ++のファイル入出力クラス
cinやcoutなどの標準の入出力機能を定義するC ++のiostreamクラスを見てきました。このクラスは、それぞれキーボードやモニターなどの標準の入力デバイスと出力デバイスに制限されています。
ファイル操作に関しては、C ++には使用できるクラスの異なるセットがあります。
これらのクラスは次のように説明されています。
- オフストリーム: 出力ファイルストリームを示し、ファイルへのデータの書き込みに使用されるファイル処理クラス。
- Ifstream: 入力ファイルストリームを示し、ファイルからデータを読み取るために使用されるファイル処理クラス。
- Fstream: ifstreamとofstreamの両方を処理する機能を持つファイル処理クラス。ファイルの読み取りと書き込みに使用できます。
C ++ファイル処理では、次の操作がサポートされています。
- ファイルを開く
- ファイルを閉じる
- ファイルから読み取る
- ファイルに書き込む
これらの各操作を詳しく見ていきましょう!
ファイルを開く
ストリームクラスの1つのオブジェクトを読み取りまたは書き込み、あるいはその両方のためにファイルに関連付けることを、ファイルを開くことと呼びます。開いているファイルは、このストリームオブジェクトを使用してコードで表されます。したがって、このストリームオブジェクトで実行される読み取り/書き込み操作は、物理ファイルにも適用されます。
ストリームでファイルを開くための一般的な構文は次のとおりです。
void open(const char* filename, ios::open mode mode)
ここに、
filename =>開くファイルのパスと名前を含む文字列。
mode =>ファイルが開かれるモードを示すオプションのパラメータ。
C ++は、ファイルを開くことができるさまざまなモードをサポートしています。 OR演算子を使用して、これらのモードの組み合わせを指定することもできます。
ファイルモード | 説明 |
---|---|
ios :: in | 読み取り用にファイルを入力モードで開きます。 |
ios :: out | ファイルにデータを書き込むためにファイルを出力モードで開きます。 |
ios :: ate | ファイルの最後に初期位置を設定します。ファイルの終わりフラグが設定されていない場合、初期位置はファイルの先頭に設定されます。 |
ios :: trunc | ファイルが書き込み用に開かれ、すでに内容が含まれている場合、内容は切り捨てられます。 |
ios :: app | すべての内容がファイルの最後に追加されるように、ファイルを追加モードで開きます。 |
ios :: binary | バイナリモードでファイルを開きます。 |
例えば、バイナリモードでデータを追加するためにファイル「myfile.dat」を開きたい場合は、次のコードを記述できます。
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
すでに述べたように、modeパラメーターはオプションです。 2番目のパラメーターを指定せずにファイルを開くと、ofstream、ifstream、またはfstreamのメンバーを開く関数には、ファイルを開くためのデフォルトのモードがあります。
これらは次のように与えられます:
無料のオンラインコンバーターyoutubeからmp4
クラス | デフォルトモード |
---|---|
Ifstream | ios :: in |
ofstream | ios :: out |
Fstream | ios :: in | ios :: out |
したがって、open関数で2番目のパラメーターを指定しない場合、使用されるストリームクラスに応じて、ファイルはデフォルトモードで開かれます。
ファイルを閉じる
close関数を使用して、ファイルの入力操作と出力操作が完了したら、ファイルを閉じて、ファイルが保持しているリソースを解放できます。
ファイルを閉じる関数は次のとおりです。
void close()
したがって、上記のファイルmyfileの操作が完了したら、次のようにファイルを閉じることができます。
myfile.close();
close関数を使用してファイルを閉じると、関連付けられているファイルオブジェクトを再利用して別のファイルを開くことができます。
ファイルからの読み取り
ストリーム抽出演算子(>>)を使用して、ファイルから1行ずつ情報を読み取ることができます。これは、cinを使用して標準入力から入力を読み取るのと似ています。唯一の違いはファイルの場合で、cinの代わりにifstreamまたはfstreamオブジェクトを使用します。
ファイルから読み取るためのサンプルコードを以下に示します。
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<上記のコードでは、ファイルを開き、ストリーム抽出演算子(>>)を使用して、ファイルの内容を読み取ります。読み取りが完了したら、ファイルを閉じることができます。
ファイルへの書き込み
ファイル操作を使用してファイルにデータを書き込むこともできます。ファイルにデータを書き込むために使用する演算子は、ストリーム挿入演算子(<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
次のサンプルコードを考えてみましょう。
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<ここでは、入力から1行を読み取り、ofstreamオブジェクトで開かれたファイルに書き込みます。
以下のコード例では、すべてのファイル処理操作のデモンストレーションを提供します。
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
出力:
ファイルへの書き込み
あなたの名前を入力してください:Ved
年齢を入力してください:7
ファイルからの読み取り
沿って
7
上記のプログラムでは、最初に書き込みモードでファイルを開きます。次に、名前と年齢などのデータを読み取り、ファイルに書き込みます。次に、このファイルを閉じます。次に、同じファイルを読み取りモードで開き、ファイルからデータを1行ずつ読み取り、画面に出力します。
したがって、このプログラムはすべてのファイルI / O操作をカバーします。
ファイル状態スラグ
ファイルの状態をチェックするために使用されるいくつかのメンバー関数があります。これらの関数はすべてブール値を返します。
これらの関数を次のように表にまとめました。
関数 説明 eof() ファイルの読み取り中にファイルの終わりに達した場合はtrueを返します。 不合格() 読み取り/書き込み操作が失敗した場合、またはフォーマットエラーが発生した場合にtrueを返します 悪い() ファイルからの読み取りまたはファイルへの書き込みが失敗した場合にtrueを返します。 良い() 上記の関数のいずれかを呼び出すとtrueが返されるのと同じ場合にfalseを返します。
Get / Putおよびその他の特殊操作
これまでに見たファイルI / Oストリームには、iostreamなどの他のI / Oストリームと同様の内部getおよびput位置があります。
クラスifstreamには、次の入力操作でファイルに読み込まれる要素/文字の場所を含む内部取得位置があります。ストリームのクラスには、次の出力操作で書き込まれる要素/文字の場所を含む内部プット位置があります。
ちなみに、fstreamにはgetとputの両方の位置があります。
これらの位置を使用した読み取りと書き込みを容易にするために、これらの位置を監視および変更するために使用されるいくつかのメンバー関数があります。
これらの機能は以下のとおりです。
機能 説明 テルグ() getポインタの現在位置を返します tellp() プットポインタの現在位置を返します seekg(位置) 移動は、ファイルの先頭から数えて指定された場所へのポインターを取得します seekg(オフセット、方向) 移動は、パラメータの方向で指定されたポイントを基準にしたオフセット値へのポインタを取得します。 seekp(position) 移動は、ファイルの先頭から数えて指定された場所へのポインタを置きます seekp(オフセット、方向) 移動すると、パラメータの方向で指定されたポイントを基準にしたオフセット値へのポインタが配置されます。
パラメータ 方向 上記の関数プロトタイプで与えられたものは 列挙 タイプのタイプ seekdir そしてそれはオフセットが数えられるポイントを決定します。
次の値をとることができます。
ios :: beg ストリームの先頭からのオフセット ios :: cur 現在位置からのオフセット ios :: end ストリームの終わりからのオフセット
これらの関数の使用法を示す完全な例を見てみましょう。
デフォルトゲートウェイが見つかりませんWindows10
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< 出力:
新しいファイルが作成されました
ファイルポインタの初期位置:34
seekp(-1、ios :: cur)の後、ファイルポインタの位置:33
seekg(5、ios :: beg)の後、ファイルポインタ:5
seekg(1、ios :: cur)の後、ファイルポインタ:6

上記のプログラムに示されているように、テキスト行を書き込むファイルが作成されています。次に、上記のさまざまな機能を使用して、ファイルポインタのさまざまな位置を表示します。
結論
このチュートリアルでは、ファイルとの間でデータを開いたり、閉じたり、読み書きしたりするためのさまざまなファイル操作について説明しました。
また、ファイル内の特定の位置にアクセスするためにファイルポインタを変更する関数も確認しました。以降のチュートリアルでは、C ++に関連するいくつかの重要なトピックについて説明します。
=> Easy C ++トレーニングシリーズをお読みください。
推奨読書