其他分享
首页 > 其他分享> > C写入和读取从二进制文件加倍

C写入和读取从二进制文件加倍

作者:互联网

我想为占用太多RAM的程序执行磁盘I / O操作.
我使用双精度矩阵并考虑将它们写入磁盘,因为字节是最快的方式(我需要保持双精度).

如何做到便携?

我发现这个代码(here),但作者说它不便携……

#include <iostream>
#include <fstream>

int main()
{
    using namespace std;

    ofstream ofs( "atest.txt", ios::binary );

    if ( ofs ) {
        double pi = 3.14;

        ofs.write( reinterpret_cast<char*>( &pi ), sizeof pi );
        // Close the file to unlock it
        ofs.close();

        // Use a new object so we don't have to worry
        // about error states in the old object
        ifstream ifs( "atest.txt", ios::binary );
        double read;

        if ( ifs ) {
            ifs.read( reinterpret_cast<char*>( &read ), sizeof read );
            cout << read << '\n';
        }
    }

    return 0;
}

解决方法:

How to do it with portability?

可移植性有不同的定义/级别.如果您所做的只是在一台机器上编写这些并在同一台机器上读取它,那么您唯一关心的可移植性是这个代码是否定义明确. (它是.)
如果要在多个不同平台上进行便携式编写,则需要编写字符串值,而不是二进制值.

但请注意,您所拥有的代码缺少正确的错误处理.它不会检查文件是否可以打开并成功写入.

标签:c,portability,io,binaryfiles,double-precision
来源: https://codeday.me/bug/20190726/1542287.html