2

Microsoft Visual C++ 2008 で H5 ファイルからデータセットを読み込んでいます。int 型と double 型のデータではすべて正常に動作しますが、文字列に遭遇すると問題が発生します。H5 ファイルには、固定長 24 の 18 個の文字列があります。私のコードは次のとおりです。

StrType strdatatype(PredType::C_S1, 24);
char *buffer1[18];
DataSet datasetCurveNames = riskFactorsH5.openDataSet("/gstrCurveNames");

datasetCurveNames.read(&buffer1, strdatatype);

実行時、buffer1 は不正なポインターでいっぱいになります。別の方法として、H5T_VARIABLE を使用して可変長文字列を変更して管理しようとしました。

 StrType strdatatype(PredType::C_S1, H5T_VARIABLE);

これも失敗します。誰かがこの問題に光を当てることができれば、それは大歓迎です。

乾杯、ルーカス

4

3 に答える 3

0

完全な文字列にメモリを割り当てる必要がありますが、ライブラリはそれを行いません。交換する必要があります

char *buffer1[18];

char buffer1[18][24];

datasetCurveNames.read(&buffer1, strdatatype);

する必要があります

datasetCurveNames.read(buffer1, strdatatype);

(いいえ&)

于 2012-12-12T17:44:35.967 に答える