在hdf5中使用std :: string会产生不可读的输出

时间:2015-08-18 12:19:54

标签: c++ utf-8 character-encoding hdf5 hdf

我目前在Windows 7 64bit上使用hdf5 1.8.15。 我的软件的源代码使用utf8编码保存在文件中。

只要我调用任何支持std :: string的hdf5函数,输出就会变得神秘

enter image description here

但如果我使用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::string s的解决方案。我很感激能帮助我解决这个问题的任何想法。

2 个答案:

答案 0 :(得分:1)

我也有同样的问题,并通过改变我的所有std :: string或h5std_string来修复它:

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

或使用string.c_str()将字符串更改为const char

答案 1 :(得分:0)

我有完全相同的问题。解决方案是,我在Visual Studio中处于调试模式,而我链接的库是在发布模式下构建的。当我将Visual Studio切换到Release-Mode时,上述错误消失了。