C++ は、バイナリ ファイル、特にバイナリ データを書き込むための「ofstream」クラスと対話するための
C++ を使用してバイナリ ファイルを作成する
C++ を使用してデータをバイナリ ファイルに保存するには、write() メソッドが使用されます。この関数は、「put」ポインタの位置から開始して、指定されたストリームに指定されたバイト数を書き込みます。 「put」ポインタが末尾にある場合、ファイルは拡張されます。ただし、ポインタがファイル内にある場合は、新しいデータが既存の文字を上書きします。書き込みプロセス中にエラーが発生した場合、ストリームはエラー状態にあるとしてマークされます。次に、例に進み、いくつかの単純な組み込み C++ 関数を使用してバイナリ ファイルに書き込む方法を学びましょう。
方法 1: 構造化データを含むバイナリ ファイルを書き込む
多くの場合、カスタム構造などの構造化データをバイナリ ファイルに書き込む必要があります。人の名前、身長、年齢を含む人のレコードが含まれる例を考えてみましょう。次のコードを参照し、説明を参照してください。
#include
#include
構造体 人 {
チャー 名前 [ 50 】 ;
整数 年 ;
ダブル 身長 ;
} ;
整数 主要 ( ) {
標準 :: 川下 outファイル ( 「people.bin」 、 標準 :: ios :: バイナリ ) ;
もし ( ! outファイル。 is_open ( ) ) {
標準 :: そうですね << 「エラー! ファイルを開けて書き込みできません!」 << 標準 :: 終わり ;
戻る 1 ;
}
人 人1 = { 「カルスム・イリヤス」 、 25 、 1.75 } ;
人 人2 = { 「カルソム・バジワ」 、 30 、 1.68 } ;
outファイル。 書く ( 再解釈_キャスト < チャー *> ( & 人1 ) 、 のサイズ ( 人1 ) ) ;
outファイル。 書く ( 再解釈_キャスト < チャー *> ( & 人2 ) 、 のサイズ ( 人2 ) ) ;
outファイル。 近い ( ) ;
標準 :: コート << 「その人の記録はバイナリ ファイルに正常に書き込まれました。」 << 標準 :: 終わり ;
戻る 0 ;
}
具体的な詳細を含むコードの内訳は次のとおりです。プログラムは、「Person」という名前のカスタム構造を定義することから始まります。名前、年齢、身長の 3 つのフィールドがあります。これらのフィールドの詳細は次のとおりです。
- 名前: 人物の名前を格納する文字列(最大50文字)
- 年: 人の年齢を格納する整数
- 身長: 人の身長を格納する double
「パーソン」構造を定義した後、プログラムのエントリポイントである main 関数が開始されます。メイン プログラムの最初の行は、「people.bin」という名前のファイルを開きます。 「std::ofstream」を使用して、バイナリ形式でデータを書き込むための「people.bin」という名前のファイルを作成します。ファイルが正常に開くかどうかを確認することは非常に重要です。それ以外の場合は、エラー メッセージが表示され、プログラムが停止します。したがって、「if」条件と is_open() 関数を使用して、ファイルが正常に開いたかどうかを確認します。
ここでは、2 つの「人」オブジェクトが作成されます。 「person」タイプの 2 つの変数「person1」と「person2」を定義します。 「カルソム・イリヤス」と「カルソム・バジュワ」に変数名、年齢、身長の値を割り当てます。
バイナリ ファイルに書き込むデータができたので、write() 関数を使用して実際の関数を実行しましょう。 「outFile.write」を使用して、各「person」オブジェクトの内容をファイルに書き込みます。 「reinterpret_cast
ファイルにデータを書き込んだ後、他の機能によってデータが失われないように、ファイルを適切に閉じることが非常に重要です。 outFile.close() を使用して、ファイルに関連付けられたリソースを解放し、データが正確に書き込まれることを保証します。最後に、バイナリ ファイルへのデータの書き込みが成功したことを確認するメッセージを出力します。
この例をもっと簡単な言葉で説明すると、人々に関する情報を秘密の言語でのみ保存できる特別なノートを想像してください。このコードは、情報 (名前、年齢、身長) を整理するための青写真を作成します。ノートを開いて 2 人のプロフィールを記入し、その情報を秘密の言語に翻訳して、中にきちんと書き込みます。その後、ノートブックを安全に閉じて、将来の使用のためにプロファイルを保存します。次のスナップショットに示されているプログラムの出力を参照してください。
方法 2: 整数をバイナリ ファイルに書き込む
このメソッドでは、整数の配列が「integers.bin」という名前のバイナリ ファイルに書き込まれます。 「reinterpret_cast
#include
整数 主要 ( ) {
標準 :: 川下 outファイル ( 「整数.bin」 、 標準 :: ios :: バイナリ ) ;
もし ( ! outファイル。 is_open ( ) ) {
標準 :: そうですね << 「エラー! ファイルを開けて書き込みできません!」 << 標準 :: 終わり ;
戻る 1 ;
}
整数 数字 [ 】 = { 42 、 99 、 - 1 、 0 } ;
outファイル。 書く ( 再解釈_キャスト < チャー *> ( 数字 ) 、 のサイズ ( 数字 ) ) ;
outファイル。 近い ( ) ;
標準 :: コート << 「指定された整数がバイナリ ファイルに正常に書き込まれました。」 << 標準 :: 終わり ;
戻る 0 ;
}
具体的な詳細を含むコードの内訳は次のとおりです。
「#include
次の行は「intnumber[] = {42, 99, -1, 0};」です。これは、整数 42、99、-1、および 0 を含む「numbers」という名前の配列を定義します。整数を慎重にバイナリ形式に変換し、「integer.bin」ファイルに書き込みます。 「outFile.close();」ファイルを正しく閉じて、整数を安全かつ整理された状態に保ちます。最後に、整数がバイナリ ファイルに正常に保存されたことを確認するメッセージが出力されます。結果を確認するには、このプログラムの次の出力を参照してください。
結論
C++ でバイナリ ファイルを作成することは、さまざまな種類のデータを効率的に処理するために重要なスキルです。 C++ でバイナリ ファイルを作成するこの調査では、「ofstream」クラスを使用してバイナリ データを効率的に処理する方法を学びました。単純な整数を扱う場合でも、カスタム構造を使用した構造化データを扱う場合でも、プロセスには、ファイル ストリームを開き、バイナリ形式でデータを書き込み、ファイルを閉じることが含まれます。この機能により、C++ 開発者はさまざまなバイナリ データ型を柔軟に操作できるようになり、システム レベルのプログラミングからマルチメディア処理に至るアプリケーションにおける言語の多用途性に貢献します。