2

Pythonで構築され、そこから読み取ろうとしているhdf5複合データセットがあります。4 つの列があり、そのうちの 1 つは長さ 1 の文字列です。文字列以外のすべての列を読み取ることができました。以下は、文字列列のみを読み取ろうとするコード例です。

#include <string>
#include <iostream>
#include "H5Cpp.h"

typedef struct data_type {
    char string_column[1];
} data_type;

int main ( void )
{
    int NBR_OF_ROWS = 28884;
    H5::H5File file = H5::H5File(MY_FILE, H5F_ACC_RDONLY);
    H5::DataSet dataset = H5::DataSet(file.openDataSet(MY_DATASET));

    H5::CompType mtype(sizeof(data_type));
    mtype.insertMember("member", HOFFSET(data_type, string_column),
            H5::PredType::C_S1);
    data_type *data = new data_type[NBR_OF_ROWS];
    dataset.read(data, mtype);

    std::cout << "string column " << data[0].string_column << std::endl;

    return 0;
}   

これはコンパイルされますが、何も出力されません:(ヒープにデータ配列を割り当てようとしましたが、役に立ちませんでした。ubuntuでg ++を使用しています。

どんな助けでも大歓迎です。

4

1 に答える 1

2

あなたの問題は、使用する文字列データ型に起因すると思います。サイズを指定しませんでした。それは stringだと言っただけです。

H5::StrType長さ 1 のを作成してみてください:

H5::StrType string_type(H5::PredType::C_S1, 1);

次に、複合データ型で使用します。

mtype.insertMember("member", HOFFSET(data_type, string_column), string_type);
于 2013-01-29T02:39:50.250 に答える