c++ 讀取不了hdf5文件中的字符串
問題描述:
在拿到一個hdf5文件,想用c++去讀取文件中的字符串,但是會報錯:read failed
ps: c++讀取hdf5的字符串方法見:https://support.hdfgroup.org/ftp/HDF5/examples/misc-examples/stratt.cpp
具體錯誤信息如下:
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++創(chuàng)建的,而是用python中的h5py庫創(chuàng)建的,h5py庫創(chuàng)建的hdf5文件,對于字符串會有編碼方式的一些問題,當然python的隱式類型的特征,輸出可以直接賦值給未指定類型的變量,這種特性使得,python下創(chuàng)建的hdf5文件,可以在python下使用。然而用在其他語言上時,字符串的問題就突出出來了。
所以針對上面的字符串讀取不了的問題,我的解決方法是,用c++去重新創(chuàng)建和讀取。
具體操作方式,我的思路就是,可以先把python創(chuàng)建的hdf5文件中的字符串用python讀出來,然后寫到txt文件里,然后c++讀取再創(chuàng)建。
當然,我認為平時就不要用python中的h5py庫去創(chuàng)建了,直接用c++創(chuàng)建就可以了,畢竟c++創(chuàng)建的python可以用,python創(chuàng)建的c++用不了。。。
如果你知道怎么用c++去讀取python下創(chuàng)建的hdf5文件中的字符串,希望你能留個言。我嘗試了很多方法,都沒成功,所以上面的方法只是一種很無奈的方法,但是可以解決這個問題。

浙公網(wǎng)安備 33010602011771號