情報をファイルに保存し、そのファイル内の情報を編集し、新しい情報を追加するプログラムを作成する最善の方法は何ですか?
質問
在庫データをファイルに保存する C++ プログラムを作成しようとしている小さなプロジェクトを始めようとしています (.txt で十分だと思います)
- •アイテムの説明•手元の数量•卸売コスト•小売コスト•在庫に追加される日付
次のことができる必要があります。
•ファイルに新しいレコードを追加•ファイルに任意のレコードを表示•ファイル内のレコードを変更します
これをより簡単かつ効率的に行うために、これを開始する前に知っておくべきことはありますか...
たとえば、XML を使用してみるべきでしょうか、それとも C++ では操作が難しすぎるものを使用してみるべきでしょうか?
これを行う最も効率的な方法を私はまったく理解していません。
ファイル内を検索して括弧内などを探すのと同じでしょうか?
編集
データサイズは大きすぎてはなりません。宿題のためだと言えるでしょう。構造体の内容をファイルのルートに書き込みたいのですが、どうすればよいでしょうか?
解決
多くのアプローチがあります。これは宿題用ですか、それとも実際に使用する用ですか?宿題の場合は、使用できるものにいくつかの制限がある可能性があります。
それ以外の場合は、次のような組み込みDBMSをお勧めします SQLite. 。他にもありますが、これが最も強力なソリューションであり、実装も最も簡単です。
XML も使用可能であり、再利用可能な実装が多数ありますが、数千のレコードを処理するとパフォーマンスが低下し始めます。JSONについても同様です。そして、JSON と XML のどちらがより単純かについては、まだ議論があるかもしれません。
別の可能性は、 struct
そしてその内容をファイルに直接書き込みます。ただし、レコード サイズが一定でない場合は注意が必要です。また、レコード形式が変更された場合は、ファイルを再構築する必要があります。それ以外の場合、慎重に実装すれば、このソリューションはパフォーマンスの点で最高のソリューションの 1 つになる可能性があります。
他のヒント
データベース エンジンを使用しない理由を教えてください。
ただの勉強のためなら……。そのファイルに保存されているデータの推定サイズとアクセス パターン (ユーザーの数、アクセスの頻度など) を教えてください。
課題は、効率的な検索および変更コードを作成することです。
検索の場合は、データ構造と構成が重要です。変更の場合は、ファイルをメモリに完全に読み込まずにファイルに更新を書き込み、そこで更新してから完全にファイルに再度書き込みます。
これが実際に使用されるプロジェクトであり、時間の経過とともに機能が追加される可能性がある場合は、たとえやりすぎに見えても、最初からデータベース ソリューションを選択してください。私も以前にこの道をたどったことがありますが、時間の経過とともに小さな機能が追加され、気づいたらデータベースを実装していました。不完全に。思い切ってデータベースを使用しましょう。
これが学習演習である場合は、保存するデータの量によって異なります。ファイルが小さい場合は、ファイル全体をメモリに読み込み、そこで操作するのが最も簡単です。変更を加えた場合は、ファイル全体をディスクに書き戻します。データが大きすぎてそれができない場合、次善の策は固定サイズのレコードを使用することです。すべてのデータ (つまり、ポインターや stl コンテナーなどを含まない) を含む POD 構造体を作成します。これにより、ファイル全体を書き換えることなく、個々のレコードを書き換えることができます。これらのどちらも機能しない場合、最善の策はデータベース ソリューションです。
どうしても手動で行う場合は、XML ではなく JSON を使用することをお勧めします。
また、sqlite も考慮してください。
これはこんな人にとって完璧な仕事のように思えます SQLite. 。小型、高速、柔軟で使いやすい。