ユーザ定義クラス 'Product'のリストをバイナリファイルに保存する必要があるモジュールに問題があります。 私は次のコードを持っています: Product 'は、リストが作成されるユーザー定義クラスです。C++でバイナリモードでファイルにリストコンテナを書き込む方法
class Product
{
private:
long int Product_no;
std::string Product_name;
double Product_price;
int Product_qty;
double Product_tax;
double Product_dis;
public:
//Constructor
Product();
Product(long int, string, double, int, double, double);
Product(long int, double, int, double, double);
//All Getter methods
//All Setter methods
};
やリストとして作成されました:
list<Product> product_list;
と、次のように開かれて書き込むファイル:私は次のことを試してみました
ofstream out("products.dat", ios::out | ios::binary);
: 1.usingを書き込み機能
output.write((char*)&product_list.begin(),sizeof(Product));
と約について読んで:
2.私はこれを行うことなく、私は正しくファイルからデータを取得することはできませんいくつかの構造に変換する製品リストを作成します。
保存と取得に必要な機能を実装する正しい方法はどれですか? 次のように私は、バイナリファイルから読み取るのを考えていたコードは次のとおりです。
Product &p;
while(in.read((char*)&p,sizeof(Product)))
{
p->Display_Product();
Productlist.push_back(p);
}
詳細を読んでの正しい方法はありますか?
これらは全く異なるアプローチであり、あなたの質問は次のようである - 私は何をすべき朝食、トースター、またはミキサーを作るために使用しますか? – SergeyA
シリアル化ライブラリを調べる必要があります。これは、ユーザー定義のクラスをバイナリ表現に格納し、後でそれらを取得するのに役立ちます。あなた自身でそれをやろうとするなら、エンディアンやパディングなどを心配する必要があります。 – RyanP
人間が読める形式のファイルを好むべきです。 [The Art of Unix Programming、Chapter 5](http://www.faqs.org/docs/artu/textualitychapter.html) –