gpt4 book ai didi

c++ - 在 C++ 中将值读入 3D 数组

转载 作者:行者123 更新时间:2023-11-28 05:05:04 28 4
gpt4 key购买 nike

我是 C++ 的新手,所以这应该是一个相当基础的问题。

假设我有 bunny.voxel.ply 文件。此文件以二进制形式写出,前 4 个字节对应于(整数)采样分辨率 res,接下来的 4 x res x res x res 与(单精度)浮点值对应的字节。

我想将这些值读入 3D 数组 voxel。我当前的代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>


int main() {
FILE* fp = fopen( "bunny.voxel.ply" , "rb" );
if (fp==NULL) {fputs ("File error",stderr); exit (1);}
int res;
fread( &res , 1 , sizeof(int) , fp );
float *voxel = new float[res*res*res];
fread(voxel , res * res * res , sizeof(float) , fp );
fclose( fp );
std::cout << "Hello, World!" << std::endl;
return 0;
}

似乎只读取了最后一个值。

关于如何修改这个读取所有值的任何建议?

最佳答案

fread 的参数是

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

因此您可能应该交换第二个和第三个参数的顺序:

int count = res*res*res;
float *voxel = new float[count];
fread(voxel, sizeof(float), count, fp);

意外地,最后一个值位于正确的内存位置,因此您可以识别它。

关于c++ - 在 C++ 中将值读入 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45018710/

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