C++ 将双精度阵列输出到硬盘上的文件

C++ 将双精度阵列输出到硬盘上的文件,c++,visual-c++,C++,Visual C++,可能重复: 各位好, 很抱歉问了两次同样的问题,我在这方面是新手,仍然在学习如何正确使用这个网站 我想以文件(.txt.dat.bin,不管怎样,都无所谓)的形式将浮点/双精度数组存储到我的硬盘上 我希望该文件是原始阵列在RAM中的镜像。我还想知道如何快速有效地将数据读回程序(基本上是将数据块从硬盘直接复制回RAM,让程序知道“this”是一个双精度数组) 最后,由于我要输出大量数据(根据具体情况高达几百MB),因此我需要能够快速高效地完成这项工作 提前感谢, -Faken您可以使用SQLit

可能重复:

各位好,

很抱歉问了两次同样的问题,我在这方面是新手,仍然在学习如何正确使用这个网站

我想以文件(.txt.dat.bin,不管怎样,都无所谓)的形式将浮点/双精度数组存储到我的硬盘上

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

最后,由于我要输出大量数据(根据具体情况高达几百MB),因此我需要能够快速高效地完成这项工作

提前感谢,


-Faken

您可以使用SQLite,它提供了在您的程序中使用SQL的轻松访问

此外,您还可以在SQLite周围查看这一点。这样,,
您可以立即将数据保存到HDD,还可以使用高效的查询来获取数据。

以下是一些基本代码。当然,您需要添加错误检查等。此外,您还必须决定是使用缓冲IO还是非缓冲IO。另一种(不可移植,但可能更快)方法是绕过STL,直接进入操作系统。最后,我不知道boost,但我得到的印象是,几乎任何你能想到想要的东西都在那里,所以你可能也想看看那里

#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]));
}
#包括
#包括
使用std::of流;
使用std::ifstream;
使用std::string;
void WriteDoubleArray(常量double arr[],size\u t size,常量字符串文件名)
{
流输出文件(fileName.c_str(),std::ios::binary);
outFile.write((const char*)arr,size*sizeof(arr[0]);
}
void ReadDoubleArray(双arr[],大小,常量字符串文件名)
{
ifstream infle(fileName.c_str(),std::ios::binary);
填充读取((字符*)arr,大小*sizeof(arr[0]);
}

只需在你的第一篇帖子上点击编辑按钮。我试过了,但我已经把问题搞砸了,结果得到的答案不是我想要的。我也没有监控线程…我不习惯这个网站的移动速度!!继续编辑你的第一个问题。这仍然是一个比创建副本更好的选择,即使一些旧的答案可能会失去有效性。