gpt4 book ai didi

C++ 保存/加载双(到/从文件)

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:31 28 4
gpt4 key购买 nike

[为清楚起见重写。]

我需要在文件中写入和读取double,格式总是具有相同的字符数。格式不需要是人类可读的:它只需要快速加载(使用尽可能少的动态内存和转换内容,文件空间很重要但并不那么重要)。

是否有一种标准(或至少安全可靠)的方法来获取 double 的组件,以便我可以将有效数字符号和尾数符号存储为 '1''0' 以及尾数和尾数分别以十六进制格式固定长度?

本质上,我如何从 double 中获取特定的位/数字组件?是否有可能在不同的系统上执行此操作(假设是相同的操作系统系列,例如 Windows),或者 double 组件的标准是否不是每个操作系统都强制执行的?

我正在使用 MinGW,当然也为 Windows 编译。我想尽可能使用 C 标准库,而不是 C++ 标准库。此外,我想避免使用其他库(如 Boost),但如果有特定的 Windows 函数,那么它们会有很大帮助。

最佳答案

最直接的方法是以二进制模式打开你的 fstream,然后使用 fstream 的 write() 和 read() 方法从流中读取你的 double:

#include <fstream>
#include <iostream>

int main( int argc, char** argv ) {
std::fstream fp( "foo", std::fstream::in |
std::fstream::out |
std::fstream::trunc |
std::fstream::binary );

double d1, d2;

d1 = 3.14;

fp.write( (char*)&d1, sizeof( d1 ) );
fp.seekg( 0, std::fstream::beg );
fp.read( (char*)&d2, sizeof( d2 ) );

std::cout << "d1 = " << d1 << " d2 = " << d2 << std::endl;
}

关于C++ 保存/加载双(到/从文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523426/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com