如何输出双打数组到硬盘?

Fak*_*ken 7 c++

我想知道如何输出一个双打数组到硬盘驱动器.

编辑:

进一步澄清.我想将它输出到硬盘驱动器上的文件(I/O功能).优选地,文件格式可以快速转换回另一个程序中的双打数组.如果它存储在标准的4字节配置中也是很好的,这样我就可以通过十六进制查看器查看它并查看实际值.

Deu*_*uro 15

嘿......所以你想在一次写/读中做到这一点,这不是太难,以下代码应该可以正常工作,可能需要一些额外的错误检查,但试用案例是成功的:

#include <string>
#include <fstream>
#include <iostream>

bool saveArray( const double* pdata, size_t length, const std::string& file_path )
{
    std::ofstream os(file_path.c_str(), std::ios::binary | std::ios::out);
    if ( !os.is_open() )
        return false;
    os.write(reinterpret_cast<const char*>(pdata), std::streamsize(length*sizeof(double)));
    os.close();
    return true;
}

bool loadArray( double* pdata, size_t length, const std::string& file_path)
{
    std::ifstream is(file_path.c_str(), std::ios::binary | std::ios::in);
    if ( !is.is_open() )
        return false;
    is.read(reinterpret_cast<char*>(pdata), std::streamsize(length*sizeof(double)));
    is.close();
    return true;
}

int main()
{
    double* pDbl = new double[1000];
    int i;
    for (i=0 ; i<1000 ; i++)
        pDbl[i] = double(rand());

    saveArray(pDbl,1000,"test.txt");

    double* pDblFromFile = new double[1000];
    loadArray(pDblFromFile, 1000, "test.txt");

    for (i=0 ; i<1000 ; i++)
    {
        if ( pDbl[i] != pDblFromFile[i] )
        {
            std::cout << "error, loaded data not the same!\n";
            break;
        }
    }
    if ( i==1000 )
        std::cout << "success!\n";

    delete [] pDbl;
    delete [] pDblFromFile;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

只需确保分配适当的缓冲区!但那是一个完整的话题.