我正在讀取Microsoft Visual C++ 2008中H5文件中的數據集。對於int和double類型的數據,一切正常,但遇到字符串時遇到問題。在H5文件中,我有18個固定長度的字符串24.我的代碼如下;從C++中讀取hdf5中的字符串
StrType strdatatype(PredType::C_S1, 24);
char *buffer1[18];
DataSet datasetCurveNames = riskFactorsH5.openDataSet("/gstrCurveNames");
datasetCurveNames.read(&buffer1, strdatatype);
執行緩衝區1中充滿了壞指針。作爲替代我已經使用H5T_VARIABLE與修改來管理的可變長度字符串嘗試:
StrType strdatatype(PredType::C_S1, H5T_VARIABLE);
這也將失敗。如果任何人都可以對這個問題有所瞭解,那將非常感激。
乾杯, 盧卡斯
這是如何工作的?何時分配了「field_value」的內存? – Walter
@Walter std :: string類包含自己的內存管理。你可以創建一個std :: string併爲其分配一個C字符串。它將調整其內部數組以適當地存儲數據。或者,您可以直接調用std :: string :: resize來更改內部存儲器陣列的大小並分配字符。有關std :: string及其內存的更多信息,請參閱http://stackoverflow.com/q/9521629/950677。 – Nathan
我知道這一切。我不知道的是'DataSet :: read()'分配一個C字符串。這是從數據類型明顯嗎? (不適合我)。 – Walter