C++代码
注意,bin文件存储格式为float32,如果其他类型读取数据不对。
int loadData(const char *file, void **data, unsigned int *length)
{
std::fstream dataFile(file, std::ifstream::in);
if (!dataFile.is_open())
{
std::cout << "Can't open files: "<< file<<std::endl;
return -1;
}
//get length of file:
unsigned int len = 0;
dataFile.seekg (0, dataFile.end);
len = dataFile.tellg();
dataFile.seekg (0, dataFile.beg);
//allocate memory:
char *buffer = new char[len];
if(buffer==NULL) {
std::cout << "Can't malloc buffer."<<std::endl;
dataFile.close();
exit(-1);
}
//read data as a block:
dataFile.read(buffer, len);
dataFile.close();
*data = (void*)buffer;
*length = len;
return 0;
}
调用方式
//load points cloud
// 注意,bin文件存储格式为float32,如果其他类型读取数据不对。
std::string dataFile = "****.bin"
unsigned int length = 0;
void *data = NULL;
std::shared_ptr<char> buffer((char *)data, std::default_delete<char[]>());
loadData(dataFile.data(), &data, &length);
buffer.reset((char *)data);
float* points = (float*)buffer.get();
size_t points_size = length/sizeof(float)/4;