gpt4 book ai didi

c++ - 是否可以将 double 数组转换为 char *?

转载 作者:行者123 更新时间:2023-11-28 03:29:20 31 4
gpt4 key购买 nike

我正在编写一个程序,它必须创建一个文件,将其映射到内存,然后向其中写入 double 的二维数组。我在查看文件时遇到问题。它充满了意想不到的值(value)。我想,这个问题与类型转换有关,但无法提出解决方案。那么,问题是,如何将 double 组转换为 char *?希望有人能给我一个解决这个问题的线索。

int main(int argc, char **argv)
{
HANDLE plik, mappedFile;
char *poi;
LPCWSTR fileName = L"plik.txt";
double tab[8][12];
createMatrix(tab); // here I fill the array with values

// creating file
// mapping the file

poi = (char *)MapViewOfFile(
mappedFile,
FILE_MAP_ALL_ACCESS,
0,
0,
0);

if (!poi)
{
puts("Can't allocate Memory!");
abort();
}

memcpy(poi,tab,96*sizeof(double));

UnmapViewOfFile((void*)poi);
CloseHandle(mappedFile);
CloseHandle(plik);
getchar();
return 0;
}

最佳答案

我认为您的代码可以正常工作,该文件包含双数,但请记住,它是一种带有浮点格式的二进制格式,因此文本编辑器只会将其显示为一些垃圾。尝试使用十六进制编辑器,并检查 double 格式。或尝试将其读回。

你的方法的主要问题是它不是跨平台的,一台机器有不同的 endianness将无法正确阅读它(这对您来说可能是问题,也可能不是问题)。

你要的是serialization .最简单的版本将只打印文件中的数字(具有一些用户定义的有限精度)——例如使用 sprintf ..

关于c++ - 是否可以将 double 数组转换为 char *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019424/

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