c++ 读取不了hdf5文件中的字符串

问题描述:

在拿到一个hdf5文件,想用c++去读取文件中的字符串,但是会报错:read failed

ps: c++读取hdf5的字符串方法见:https://support.hdfgroup.org/ftp/HDF5/examples/misc-examples/stratt.cpp

具体错误信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
HDF5-DIAG: Error detected in HDF5 (1.8.16) thread 140492203562816:
  #000: ../../../src/H5Dio.c line 173 in H5Dread(): can't read data
    major: Dataset
    minor: Read failed
  #001: ../../../src/H5Dio.c line 425 in H5D__read(): unable to set up type info
    major: Dataset
    minor: Unable to initialize object
  #002: ../../../src/H5Dio.c line 958 in H5D__typeinfo_init(): unable to convert between src and dest datatype
    major: Dataset
    minor: Feature is unsupported
  #003: ../../../src/H5T.c line 4548 in H5T_path_find(): no appropriate function for conversion path
    major: Datatype
    minor: Unable to initialize object
terminate called after throwing an instance of 'H5::DataSetIException'

  

这很有可能是因为这个hdf5文件不是用c++创建的,而是用python中的h5py库创建的,h5py库创建的hdf5文件,对于字符串会有编码方式的一些问题,当然python的隐式类型的特征,输出可以直接赋值给未指定类型的变量,这种特性使得,python下创建的hdf5文件,可以在python下使用。然而用在其他语言上时,字符串的问题就突出出来了。

 

所以针对上面的字符串读取不了的问题,我的解决方法是,用c++去重新创建和读取。

具体操作方式,我的思路就是,可以先把python创建的hdf5文件中的字符串用python读出来,然后写到txt文件里,然后c++读取再创建。

当然,我认为平时就不要用python中的h5py库去创建了,直接用c++创建就可以了,毕竟c++创建的python可以用,python创建的c++用不了。。。

 

如果你知道怎么用c++去读取python下创建的hdf5文件中的字符串,希望你能留个言。我尝试了很多方法,都没成功,所以上面的方法只是一种很无奈的方法,但是可以解决这个问题。

 

posted @   立冬以东  阅读(1226)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示