Question on reading - How to read back variable length string dataset from HDF5file ?

Hi HDF help/users -
   
  How do i read a string array dataset(variable/fixed length) ? Well, i can read a fixed length string by using the code below, however variable length string dataset array can be written, however am unable to read it back. ? Any suggestion ?

···

--------------------
  //reading a fixed len/single dim string
  const H5std_string DSET_STR_NAME( "string" );
  const int SPACE1_DIM1 = 1;
  const int SPACE1_RANK = 1;
  char *wdata="hello1";
  char *rdata;
  DataSpace sid1(SPACE1_RANK, dims1);
  H5File file( FILE_NAME, H5F_ACC_TRUNC );
  StrType tid1(0, 100);
  DataSet dataset= file.createDataSet(DSET_STR_NAME, tid1, sid1);
  dataset.write((void*)wdata, tid1);
  dataset.close();
  dataset = file.openDataSet(DSET_STR_NAME);
  rdata = new char[100];
  memset(rdata,'\0',sizeof(rdata));
  dataset.read((void*)rdata, tid1);
  int len=strlen(rdata);
  for(int i=0;i<len;++i)
  cout <<rdata[i];
  cout<<endl;
   
  --------------------
   
  //reading a var len string array
  const H5std_string DSET_STR_NAME( "string" );
  const int SPACE1_DIM1 = 4;
  const int SPACE1_RANK = 1;
  char *wdata[4]={"hello1","hello2","hello3","hello4"};
  char *rdata;
  DataSpace sid1(SPACE1_RANK, dims1);
  H5File file( FILE_NAME, H5F_ACC_TRUNC );
  StrType tid1(0, H5T_VARIABLE);
  DataSet dataset= file.createDataSet(DSET_STR_NAME, tid1, sid1);
  dataset.write((void*)wdata, tid1); //I was able to write these data into file
  dataset.close();
  dataset = file.openDataSet(DSET_STR_NAME);
  rdata = new char[100];
  memset(rdata,'\0',sizeof(rdata));
  dataset.read((void*)rdata, tid1);
  //How can i read this data back from file.
   
  Thanks Again

---------------------------------
Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now.