2009-05-06 22 views
1

私はATMをシミュレートするアプリケーションを作成しています(まったく問題ありません)。私はトランザクションをハードディスクに保存するのに少し問題がありました。私はそれをDBやテキストファイルとして保存すべきか?B)STL C++でDBやtxtフォーマットを使用してディスクに保存するのはどうでしょうか?(私は実際には、必要に応じて私はします)。このようなファイルをC++でディスクに保存する方法は?

答えて

6

何か:-)事前に

ありがとう:それはで最も広く分散データベースであるため、

#include <iostream> 
#include <fstream> 
using namespace std; 

int main() { 
    ofstream myfile; 
    myfile.open ("example.txt"); 
    myfile << "Writing this to a file.\n"; 
    myfile.close(); 
    return 0; 
} 

はしかし、あなたは、あなたのアプリケーションにSQLiteのをリンクに見てみたいことがあります世界: http://www.sqlite.org/capi3.html

これは実用的で、多くのモバイルデバイス、Thunderbird、Firefoxで使用されています。使用方法/用途に依存する

+1

あなたはへのパラメータとしてファイル名を渡すことができますctorとclose()コールは余計です。 – dirkgently

+0

ファイルを閉じないでください。あなたは返す前にベクトルを0にリサイズしませんか? – MighMoS

+1

@MighMoS:ストリームオブジェクツは、近くで破壊せずにうまく自分自身をきれいにするのですか? 私はいつも「これは私がファイルでやったところです」と明示的に言うために、使用後にファイルを閉じるという習慣にあったと思います。おそらくメモリを正しく管理せずファイルを残した古い言語開いた。 – Andy

1

Aに)私は

、DBまたはテキストファイルとして保存する必要があります - あなたは最高の裁判官です。

B)STL C++でDBまたはtxt形式を使用してディスクに保存するにはどうすればよいですか(サードパーティのライブラリを使用する必要はありませんが、必要に応じて行います)。

STLでは、データベースドライバは提供されていません。出力ストリームを作成し、ディスク上のファイルとしてデータを保存することができます。 DBファイルを書き出す予定の場合は、DBの内部形式を知り、バイナリファイルを書き込む必要があります。

1

テキストファイルは簡単です - <fstream>には、ofstreamが必要なクラスがあります。オーバーライド演算子< <(トランザクションクラスを使用していますか?)、次にcoutに書き込むようにofstreamに書き込みます。

+0

私はクラスを使用しています。良い推測;-) – Kredns

0

C++の場合は、fstreamをご覧ください。

外部(しかし非常に標準的な)ライブラリを使用することができれば、ブーストのserializationがあなたにとって大きな助けになるかもしれません - 特にSTLコンテナの内容をダンプすることを望むならあなたの質問から)。

外部ライブラリを買う余裕がない場合でも、シリアル化のAPIがどのように設計されているかを調べることを強くおすすめします。

1

もしあなたがC++を合理的に使い慣れていれば、トランザクションをテキストファイルに記録することをお勧めします。 C++でこれを行う最も簡単な方法はそうのようなofstreamのを使用することです。もちろん

#include <fstream> 

void write_transaction(ofstream& file, transaction t) 
{ 
    file << t.somedata; 
} 

int main(int argc, char** argv) 
{ 
    ofstream file; 
    file.open("transactions.txt"); 
    transaction t; 
    t.data = "Something"; 
    write_transaction(file, t); 
    file.close(); 
    return 0; 
} 

、トランザクションはすべてのトランザクションデータが含まれており、おそらく配列に開催されるものとして定義されます。 write_transactionはすべての重要なデータを書き出します。

3

このデータベースは、1回のトランザクションで1行だけファイルに書き込むだけです。C++ストリーミングクラスの便利なリファレンスはhttp://www.cppreference.com/wiki/io/startです。これはC++の一般的なリファレンスも提供しています

+0

ニースのウェブサイト。ありがとう! – Kredns

0

私は主にプロジェクトのpuroposeに依存していると思います。それは深刻なものであれば、DB..other賢明なファイルを使用することをお勧めし

良いです実際に私は、ファイルベースのDBを使用するいくつかの時間...

関連する問題