Sukerbek Ответов: 1

HDF5 C++: чтение строки в составном наборе данных


Привет всем в настоящее время я работаю над тем, как читать HDF compound dataset. Мой вопрос заключается в том, как я могу получить имя составных членов набора данных, я пытался получить, но он дал мне пустое имя. Однако, когда я пытаюсь получить имя членов в Linux, я получаю его, но в windows MVS 2010 я не могу. Любая помощь будет оценена по достоинству.

Что я уже пробовал:

H5T_class_t cTT = dataSet.getTypeClass();

if( cTT == H5T_COMPOUND )
{
      H5::CompType dc = dataSet.getCompType();

      for( int i = 0; i < dc.getNmembers(); i++ )
      {
           H5std_string memberName = dc.getMemberName( i );
          
          //memberName is = NULL; in windows
          //memberName is = ok; in linux     
      }
} 

Jochen Arndt

Что вы подразумеваете под "memberName is = NULL; in windows"?

Я не знаю HDF, но быстрое исследование показывает, что H5std_string кажется строкой std::. Это не может быть NULL (но пустая строка).
Для доступа к строке используйте memberName.c_str() и при необходимости преобразуйте кодировку (вероятно, это UTF-8, который затем должен быть преобразован перед печатью с помощью сборок Windows).

1 Ответов

Рейтинг:
2

KarstenK

Если вы немного погуглите то возможно найдете документация по H5::StrType. С помощью функции getCset() вы должны получить символ* для работы.

Проверьте настройки компилятора, с которыми вы работаете в UNICODE. Прочтите эту ссылку, чтобы включить Поддержка Unicode в Visual Studio.


Sukerbek

Я уже гуглил целый день, а потом все равно опубликовал свой вопрос, я решил свою проблему с моделью выпуска в Visual studio 2010.
Спасибо вам ребята