2009-07-07 37 views
0

可能重复:
How to output array of doubles to hard drive?1.4.3双打的数组到一个文件在硬盘上

大家好,

对不起,问同样的问题两次,我是新在此并仍在学习如何正确使用本网站。

我想以一个文件的形式(.txt .dat .bin,无论什么都没关系)将一个浮点数/双精度数组存储到我的硬盘中。

我希望该文件是原始数组看起来像它坐在RAM中时的镜像。我也想知道如何快速高效地将数据读回程序(基本上将硬盘中的数据块直接复制回RAM中,让程序知道“this”是一个双精度数组)。

最后,由于我输出的数据量很大(根据具体情况可能会达到几百MB),因此我需要能够快速有效地完成此操作。

由于提前,

-Faken

+0

只需在您的第一篇文章中使用编辑按钮。 – 2009-07-07 05:42:11

回答

0

你可以使用SQLite,它提供了方便的访问到你的程序中使用SQL。 Here you'll find the amalgamation

此外,你可以看看这个SQLite周围的beautiful C++ wrapper。通过这种方式,您可以立即将数据保存到硬盘,并且您还可以使用高效的查询来获取数据。

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])); 
} 
相关问题