C++ ファイル処理: ファイルを開く、書き込む、読み込む、閉じる方法 C++

ファイル処理とは C++?

ファイルは、ストレージ デバイスにデータを永続的に保存します。ファイル処理を使用すると、プログラムからの出力をファイルに保存できます。ファイル内にあるデータに対してさまざまな操作を実行できます。

ストリームは、入出力操作が実行されるデバイスの抽象化です。ストリームは、不定長の文字の宛先またはソースとして表すことができます。これは、使用方法によって決まります。 C++ ファイル処理のためのメソッドを備えたライブラリを提供します。これについて説明しましょう。

fstream ライブラリ

fstreamライブラリは C++ プログラマーには、ファイルを操作するための 3 つのクラスがあります。これらのクラスには次のものが含まれます。

  • のストリーム– このクラスは出力ストリームを表します。 ファイルの作成とファイルへの情報の書き込みに使用されます。
  • イフストリーム– このクラスは入力ストリームを表します。 データファイルから情報を読み取るために使用されます。
  • ストリーム– このクラスは通常、ファイル ストリームを表します。 ofstream/ifstream 機能が付属しています。 これは、ファイルの作成、ファイルへの書き込み、データ ファイルからの読み取りができることを意味します。

次の図を見ると簡単に理解できます。

fstreamライブラリ
fstreamライブラリ

fstream ライブラリの上記のクラスを使用するには、それをヘッダー ファイルとしてプログラムに含める必要があります。 もちろん、#include プリプロセッサ ディレクティブを使用します。 iostream ヘッダー ファイルも含める必要があります。

ファイルを開く方法

ファイルに対して何らかの操作を実行する前に、まずファイルを開く必要があります。ファイルに書き込む必要がある場合は、fstream または ofstream オブジェクトを使用してファイルを開きます。ファイルから読み取るだけが必要な場合は、ifstream オブジェクトを使用してファイルを開きます。

XNUMX つのオブジェクト、つまり fstream、ofstream、および ifstream には、open() 関数が定義されています。 この関数は次の構文をとります。

open (file_name, mode);
  • file_name パラメータは、開くファイルの名前を示します。
  • mode パラメータはオプションです。次のいずれかの値を指定できます。
詳細説明
ios::アプリ 追加モード。 ファイルに送信された出力はファイルに追加されます。
ios::食べた 出力用にファイルを開いてから、読み取りおよび書き込みコントロールをファイルの最後に移動します。
ios::で ファイルを読み取り用に開きます。
ios::out 書き込み用にファイルを開きます。
ios::trunc ファイルが存在する場合は、ファイルを開く前にファイル要素を切り詰める必要があります。

2 つのモードを同時に使用することも可能です。| (OR) 演算子を使用して組み合わせます。

例1:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file.close(); 
	}
	return 0;
}

出力:

ファイルを開く

コードのスクリーンショットは次のとおりです。

ファイルを開く

コードの説明:

  1. iostream ヘッダー ファイルをプログラムにインクルードして、その機能を使用します。
  2. そのクラスを使用するには、プログラムに fstream ヘッダー ファイルをインクルードします。
  3. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  4. main() 関数を呼び出します。 プログラム ロジックはその本体内に含める必要があります。
  5. fstream クラスのオブジェクトを作成し、my_file という名前を付けます。
  6. 上記のオブジェクトに open() 関数を適用して、新しいファイルを作成します。 out モードを使用すると、ファイルに書き込むことができます。
  7. if 文を使用して、ファイルの作成が失敗したかどうかを確認します。
  8. ファイルが作成されなかった場合にコンソールに出力するメッセージ。
  9. if ステートメントの本文の終わり。
  10. ファイルが作成された場合に何を行うかを指定するには、else ステートメントを使用します。
  11. ファイルが作成された場合にコンソールに出力するメッセージ。
  12. オブジェクトに close() 関数を適用して、ファイルを閉じます。
  13. else ステートメントの本文の終わり。
  14. プログラムは正常に完了した場合に値を返す必要があります。
  15. main() 関数本体の終わり。

ファイルを閉じる方法

一度 C++ プログラム 終了すると自動的に終了します

  • ストリームをフラッシュします
  • 割り当てられたメモリを解放します
  • 開いているファイルを閉じます。

ただし、プログラマーとして、プログラムが終了する前に開いているファイルを閉じる方法を学ぶ必要があります。

fstream、ofstream、および ifstream オブジェクトには、ファイルを閉じるための close() 関数があります。 この関数は次の構文をとります。

void close();

ファイルに書き込む方法

直接ファイルに書き込むことができます C++ プログラム。これにはストリーム挿入演算子 (<<) を使用します。ファイルに書き込むテキストは二重引用符で囲む必要があります。

これを実証してみましょう。

例2:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file << "Guru99";
		my_file.close();
	}
	return 0;
}

出力:

ファイルに書き込む方法

コードのスクリーンショットは次のとおりです。

ファイルに書き込む方法

コードの説明:

  1. iostream ヘッダー ファイルをプログラムにインクルードして、その機能を使用します。
  2. そのクラスを使用するには、プログラムに fstream ヘッダー ファイルをインクルードします。
  3. プログラムに std 名前空間を含めると、そのクラスを呼び出さずに使用できます。
  4. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  5. fstream クラスのインスタンスを作成し、my_file という名前を付けます。
  6. open() 関数を使用して、my_file.txt という名前の新しいファイルを作成します。 ファイルは書き込みのために out モードで開かれます。
  7. ファイルが開かれていないかどうかを確認するには、if ステートメントを使用します。
  8. ファイルが開かれていない場合にコンソールに印刷するテキスト。
  9. if ステートメントの本文の終わり。
  10. ファイルが作成された場合に何を行うかを指定するには、else ステートメントを使用します。
  11. ファイルが作成された場合にコンソールに出力されるテキスト。
  12. 作成したファイルにテキストを書き込みます。
  13. ファイルを閉じるには、close() 関数を使用します。
  14. else ステートメントの本文の終わり。
  15. プログラムは正常に完了すると値を返す必要があります。
  16. main() 関数の本体の終わり。

ファイルから読み取る方法

ファイルから情報を読み込むことができます C++ プログラム。これは、ストリーム抽出演算子 (>>) を使用することで可能です。この演算子は、キーボードからユーザー入力を読み取る場合と同じように使用します。ただし、cin オブジェクトを使用する代わりに、ifstream/fstream オブジェクトを使用します。

例3:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::in);
	if (!my_file) {
		cout << "No such file";
	}
	else {
		char ch;

		while (1) {
			my_file >> ch;
			if (my_file.eof())
				break;

			cout << ch;
		}

	}
	my_file.close();
	return 0;
}

出力:

ファイルから読み取る

そのようなファイルはありません

コードのスクリーンショットは次のとおりです。

ファイルから読み取る

コードの説明:

  1. iostream ヘッダー ファイルをプログラムにインクルードして、その機能を使用します。
  2. そのクラスを使用するには、プログラムに fstream ヘッダー ファイルをインクルードします。
  3. プログラムに std 名前空間を含めると、そのクラスを呼び出さずに使用できます。
  4. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  5. fstream クラスのインスタンスを作成し、my_file という名前を付けます。
  6. open() 関数を使用して、my_file.txt という名前の新しいファイルを作成します。 ファイルは、読み取りのために in モードで開かれます。
  7. ファイルが存在しないかどうかを確認するには、if ステートメントを使用します。
  8. ファイルが見つからない場合にコンソールに印刷するテキスト。
  9. if ステートメントの本文の終わり。
  10. ファイルが見つかった場合の動作を指定するには、else ステートメントを使用します。
  11. 作る 文字変数 chという名前。
  12. 作る whileループ ファイルの内容を反復処理します。
  13. ファイルの内容を変数chに書き込み/保存します。
  14. if 条件と eof() 関数、つまりファイルの終わりを使用して、終わりに達していない場合でもコンパイラーがファイルからの読み取りを継続できるようにします。
  15. ファイルの終わりに達したら、break ステートメントを使用してファイルからの読み取りを停止します。
  16. 変数 ch の内容をコンソールに出力します。
  17. しばらく本体の終わり。
  18. else ステートメントの本文の終わり。
  19. close() 関数を呼び出してファイルを閉じます。
  20. プログラムは正常に完了すると値を返す必要があります。
  21. main() 関数の本体の終わり。

製品概要

  • ファイル処理を使用すると、プログラムの出力をファイルに送信して保存できます。
  • ファイル内にあるデータに対して、さまざまな操作を適用できます。
  • ストリームは、入出力操作が実行されるデバイスを表す抽象化です。
  • ストリームは、不定長の文字の宛先またはソースとして表すことができます。
  • fstreamライブラリは C++ ファイル処理の方法を備えたプログラマー。
  • ライブラリを使用するには、#include プリプロセッサ ディレクティブを使用してプログラムにライブラリを組み込む必要があります。