C ++でファイルを読み書きする方法

How Read Write File C



この記事では、いくつかの例を使用して、C ++プログラミング言語でファイルの読み取りと書き込みを行う方法を紹介します。読み取りや書き込みなどのC ++ファイル操作を理解するには、まずC ++のストリームの概念を理解する必要があります。

ストリームとは何ですか?

ストリームは、単にデータまたは文字のフローです。ストリームには、入力ストリームと出力ストリームの2種類があります。入力ストリームは、キーボードなどの外部入力デバイスからデータを読み取るために使用され、出力ストリームは、モニターなどの外部出力デバイスにデータを書き込むために使用されます。ファイルは、入力ソースと出力ソースの両方と見なすことができます。









C ++では、ストリームを使用して、外部ソースとの間でデータを送受信します。



組み込みクラスを使用して、入出力ストリーム、つまりiosにアクセスできます。





C ++プログラミング言語のストリームクラス階層は次のとおりです。



cinオブジェクトとcoutオブジェクトは、それぞれキーボードからデータを読み取り、モニターに出力を表示するために使用されます。さらに、入力ファイルストリームを表すifstreamは、ファイルからデータのストリームを読み取るために使用され、出力ファイルストリームを表すofstreamは、ファイルにデータのストリームを書き込むために使用されます。

iostram.hファイルには、C ++プログラミング言語で必要なすべての標準入出力ストリームクラスが含まれています。

ストリームの基本を理解したところで、C ++でのファイル操作をよりよく理解するのに役立つ次の例について説明します。

  • 例1:ファイルを開いたり閉じたりする
  • 例2:ファイルへの書き込み
  • 例3:ファイルから読み取る
  • 例4:ファイルの読み取りと書き込み
  • 例5:バイナリファイルの読み取りと書き込み

例1:ファイルを開いたり閉じたりする

このサンプルプログラムでは、ファイルを開く/作成する方法と、C ++でファイルを閉じる方法を示します。以下のプログラムでわかるように、ファイル操作に必要なライブラリが含まれています。

ファイルを開いたり閉じたりするには、ofstreamのオブジェクトが必要です。次に、ファイルの読み取りまたは書き込みを行うには、ファイルを開く必要があります。 ofstreamクラスにアクセスできるように、行番号1にfstreamヘッダーファイルをインクルードしました。

myFile_Handlerをmain関数内のofstreamのオブジェクトとして宣言しました。次に、open()関数を使用して空のファイルを作成し、close()関数を使用してファイルを閉じることができます。

#含む

を使用して 名前空間時間;

int主要(()。
{{
ofstream myFile_Handler;

//ファイルを開く
myFile_Handler。開いた(('File_1.txt')。;

//ファイルを閉じる
myFile_Handler。選ぶ(()。;
戻る 0;
}

次に、プログラムをコンパイルして出力を調べます。以下の出力ウィンドウでわかるように、File_1.txtファイルはプログラムの実行後に作成されました。ファイルにコンテンツを書き込んでいないため、ファイルのサイズはゼロです。

例2:ファイルへの書き込み

前のサンプルプログラムでは、ファイルを開く方法とファイルを閉じる方法を示しました。次に、ファイルに何かを書き込む方法を示します。

ストリーム挿入演算子を使用してファイルに書き込むことができます。<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#含む

を使用して 名前空間時間;

int主要(()。
{{
ofstream myFile_Handler;
//ファイルを開く
myFile_Handler。開いた(('File_1.txt')。;

//ファイルに書き込みます
myFile_Handler<< 'これはサンプルテストファイルです。 ' <<endl;
myFile_Handler<< 'これはファイルの2行目です。 ' <<endl;

//ファイルを閉じる
myFile_Handler。選ぶ(()。;
戻る 0;
}

次に、上記のプログラムをコンパイルして実行します。以下に示すように、ファイルFile_1.txtへの書き込みに成功しました。

例3:ファイルから読み取る

前の例では、コンテンツをファイルに書き込む方法を示しました。次に、例2で作成したファイルからコンテンツを読み取り、標準の出力デバイス、つまりモニターにコンテンツを表示してみましょう。

getline()関数を使用してファイルから行全体を読み取り、次にcoutを使用してその行をモニターに出力します。

#含む
#含む
#含む

を使用して 名前空間時間;

int主要(()。
{{
ifstream myFile_Handler;
文字列myLine;

//読み取りモードでファイルを開く
myFile_Handler。開いた(('File_1.txt')。;

もしも((myFile_Handler。is_open(()。)。
{{
//ファイルを読み続けます
その間((getline((myFile_Handler、myLine)。)。
{{
//標準出力に行を出力します
費用 <<myLine<<endl;
}
//ファイルを閉じる
myFile_Handler。選ぶ(()。;
}
そうしないと
{{
費用 << 「ファイルを開くことができません!」;
}
戻る 0;
}

ここで、次のコマンドを使用してFile_1.txtのコンテンツを出力します:catFile_1.txt。プログラムをコンパイルして実行すると、出力がファイルの内容と一致することは明らかです。したがって、ファイルの読み取りに成功し、ファイルの内容をモニターに出力しました。

例4:ファイルの読み取りと書き込み

これまで、ファイルを開く、読み取る、書き込む、閉じる方法を説明してきました。 C ++では、ファイルの読み取りと書き込みを同時に行うこともできます。ファイルの読み取りと書き込みの両方を行うには、fstreamオブジェクトを取得し、ios :: inモードとios :: outモードでファイルを開く必要があります。

この例では、最初にいくつかのコンテンツをファイルに書き込みます。次に、ファイルからデータを読み取り、モニターに出力します。

#含む
#含む
#含む

を使用して 名前空間時間;

int主要(()。
{{
fstream myFile_Handler;
文字列myLine;

//ファイルを開く
myFile_Handler。開いた(('File_1.txt'、ios::: |ios:::アウト)。;

//ファイルが開いているかどうかを確認します
もしも((myFile_Handler)。
{{
費用 << 「ファイルが開かれませんでした!」;
出口((1)。;
}

//ファイルに書き込みます
myFile_Handler<< '1。これは別のサンプルテストファイルです。 ' <<endl;
myFile_Handler<< '2。これはファイルの2行目です。 ' <<endl;

myFile_Handler。seekg((ios:::頼む)。;

//ファイルを読みます
もしも((myFile_Handler。is_open(()。)。
{{
//ファイルを読み続けます
その間((getline((myFile_Handler、myLine)。)。
{{
//標準出力に行を出力します
費用 <<myLine<<endl;
}

//ファイルを閉じる
myFile_Handler。選ぶ(()。;
}
そうしないと
{{
費用 << 「ファイルを開くことができません!」;
}
myFile_Handler。選ぶ(()。;
戻る 0;
}

次に、プログラムをコンパイルして実行します。

例5:バイナリファイルの読み取りと書き込み

この例では、クラスを宣言してから、オブジェクトをバイナリファイルに書き込みます。この例を単純化するために、パブリック変数emp_idを使用してEmployeeクラスを宣言しました。次に、バイナリファイルを読み取り、出力をモニターに出力します。

#含む
#含む

を使用して 名前空間時間;

クラス社員
{{
公衆
intemp_id;
};

int主要(()。
{{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

従業員empObj_W、empObj_R;

//ファイルを開く
binOutFile_Handler。開いた(('employee.dat'、ios:::アウト |ios:::バイナリ)。;

//ファイルが開いているかどうかを確認します
もしも((binOutFile_Handler)。
{{
費用 << 「ファイルが開かれませんでした!」;
出口((1)。;
}

// empObj_Wを初期化します
empObj_W。emp_id = 1512;

//ファイルに書き込みます
binOutFile_Handler。書きます((((char *)。 empObj_W、のサイズ((社員)。)。;
binOutFile_Handler。選ぶ(()。;

もしも((binOutFile_Handler。良い(()。)。
{{
費用 << 「バイナリファイルの書き込み中にエラーが発生しました!」 <<endl;
出口((2)。;
}

//それでは、employee.datファイルを読みましょう
binInFile_Handler。開いた(('employee.dat'、ios::: |ios:::バイナリ)。;
//ファイルが開いているかどうかを確認します
もしも((binInFile_Handler)。
{{
費用 << 「ファイルが開かれませんでした!」;
出口((3)。;
}

//バイナリファイルの内容を読み取ります
binInFile_Handler。読んだ((((char *)。 empObj_R、のサイズ((社員)。)。;
binInFile_Handler。選ぶ(()。;

もしも((binInFile_Handler。良い(()。)。
{{
費用 << 「バイナリファイルの読み取り中にエラーが発生しました!」 <<endl;
出口((4)。;
}

// empObj_Rの出力を出力します
費用 << '従業員の詳細:' <<endl;
費用 << '従業員ID : ' <<empObj_R。emp_id <<endl;

戻る 0;
}

結論

ファイルは主にデータを格納するために使用され、実際のプログラミングで重要な役割を果たします。この記事では、いくつかの例を使用して、C ++プログラミング言語でさまざまなファイル操作を使用する方法を示しました。さらに、テキストファイルとバイナリファイルの両方でデータを読み書きする方法を示しました。