2009-07-07 2 views
0

可能性の重複:
How to output array of doubles to hard drive?ハードドライブ上のファイルにdoubleの配列を出力

はみなさん、こんにちは、二度同じ質問をするための

申し訳ありませんが、私は新たなんですこのサイトを正しく使用する方法はまだ学習しています。

ハードドライブにフロート/ダブルの配列をファイル(.txt .dat .bin、それは問題ではありません)の形式で保存したいと思います。

元の配列がRAMに置かれていたときと同じように、そのファイルを鏡像にします。また、データを素早く効率的にプログラムに読み込む方法も知りたいです(基本的に、ハードドライブのデータをRAMに直接コピーして、 "this"が2倍の配列であることをプログラムに知らせてください)。

最後に、大量のデータを出力しているので(私は数百MBまで)、これを迅速かつ効率的に行う必要があります。事前に

おかげで、

-Faken

+0

最初の投稿で編集ボタンを使用してください。 –

+0

私は試しましたが、私はすでに質問をひどくひどく締めてしまって、私が望むものではなかった答えで終わったのです。私もスレッドを監視しなかった...私はこのウェブサイトが動く速度に慣れていなかった!! – Faken

+0

あなたの最初の質問を編集してください。古い回答の中には妥当性が失われても、重複を作成するよりも優れた選択肢です。 –

答えて

0

あなたは、あなたのプログラムでSQLを使用してへの容易なアクセスを提供してSQLiteのを、使用することができます。 Here you'll find the amalgamation

また、SQLiteを中心にbeautiful C++ wrapperをチェックアウトすることもできます。このようにして、 を使用すると、すぐにデータをHDDに保存することができます。また、効率的なクエリを使用してデータを取得することもできます。

2

ここでは、始めるための基本的なコードを紹介します。もちろん、エラーチェックなどを追加することもできます。また、バッファされたIOとバッファされていないIOのどちらを選択するかを決定する必要があります。別の(移植性はありませんが、おそらくより高速な)アプローチは、STLをバイパスしてオペレーティングシステムに直接移動することです。最後に、私はブーストを知らないが、欲しいと思っていることの何かがそこにあるという印象を得ているので、あなたもそこを見たいと思うかもしれない。

#include <fstream> 
#include <string> 

using std::ofstream; 
using std::ifstream; 
using std::string; 

void WriteDoubleArray(const double arr[], size_t size, const string fileName) 
{ 
    ofstream outFile(fileName.c_str(), std::ios::binary); 
    outFile.write((const char *)arr, size * sizeof(arr[0])); 
} 


void ReadDoubleArray(double arr[], size_t size, const string fileName) 
{ 
    ifstream inFile(fileName.c_str(), std::ios::binary); 
    inFile.read((char *)arr, size * sizeof(arr[0])); 
} 
関連する問題