HDF5写char*类型或者string类型数据

一、描述:

创建一个.h5格式的文件,把char*或者string类型的数据写入到创建的文件中。

二、环境:

linux下,HDF5版本hdf5-1.10.1.tar.gz。

三、代码测试:

#include <iostream>
#include <vector>
#include <string.h>
#include "H5Fpublic.h"
#include "hdf5.h"
#include "hdf5_hl.h"
using namespace std;

int main(int argc, char *argv[])
{
    hid_t hdfId; // .h5文件的句柄
    const char *writeH5File = "testWriteh5String.h5"; // 在可执行目录下
    // 创建
    hdfId = H5Fcreate(writeH5File, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
    if(hdfId<0)
        return -1;

    // 写数据
    vector<char*> dataVector(10,"ISMILELI");
    int rank = 1; // 写入维度
    int width = strlen(dataVector.at(0));
    const char *childStr = "/ROOTCHILD";
    int length = dataVector.size(); // 写入一个char*的长度
    hid_t space,dataset;
    hid_t atype;
    herr_t  status;

    hsize_t fdim[] = {(hsize_t)length};

    space = H5Screate_simple(rank,fdim,NULL);
    if(space<0)
        return -1;
    atype= H5Tcopy(H5T_C_S1);
    status=H5Tset_size(atype,width);
    if(status<0)
          return -1;
    dataset = H5Dcreate1(hdfId,childStr,atype,space,H5P_DEFAULT);
    if(dataset<0)
          return -1;
    string tempStr = "";
    for(int i=0; i<length; i++)
        tempStr+=dataVector.at(i);
    status=H5Dwrite(dataset,atype,H5S_ALL,H5S_ALL,H5P_DEFAULT,tempStr.c_str());
    if(status<0)
          return -1;
    H5Sclose(space);
    H5Dclose(dataset);
    H5Tclose(atype);

    // 关闭
    herr_t herr;
    herr=H5Fclose(hdfId);
    if(herr<0)
        return -2;
    cout << "write success!" << endl;
    return 0;
}

四、运行结果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值