Использование std :: string в hdf5 создает нечитаемый вывод

В настоящее время я использую hdf5 1.8.15 на Windows 7 64bit.
Исходный код моего программного обеспечения сохраняется в файлах с использованием кодировки utf8.

Как только я вызываю любую функцию hdf5, поддерживающую std :: string, вывод становится загадочным

введите описание изображения здесь

Но если я использую const char* вместо std::stringвсе работает нормально. Это относится и к имени файла.

Вот краткий пример:

std::string filename_ = "test.h5";
H5::H5File file( filename_.c_str(), H5F_ACC_TRUNC); // works

H5::H5File file( filename_, H5F_ACC_TRUNC); // filename is not readable or
// hdf5 throws an exception

Я предполагаю, что эта проблема вызвана различными кодировками, используемыми в моих исходных файлах и hdf5. Но я не уверен в этом и не нашел решения, позволяющего использовать std::strings. Буду признателен за любую идею, которая поможет мне в этом вопросе.

3

Решение

У меня также была та же проблема, и я исправил ее, изменив все мои std :: string или h5std_string на буквально:

5File file("myFile.h5", H5F_ACC_TRUNC);

Или использовать string.c_str() изменить строку на const char,

1

Другие решения

У меня была точно такая же проблема. Решением было то, что я был в режиме отладки в Visual Studio, тогда как библиотеки, с которыми я связывался, были собраны в Release-Mode. Когда я переключился в Visual Studio в Release-Mode, вышеуказанная ошибка исчезла.

0

По вопросам рекламы [email protected]