C++ Exiv2:如何使用UTF8文件路径读取照片?
我正在使用GTKmm和exiv2读取EXIF元数据表单照片。但是Exiv2函数只接受std::string文件路径。。。当我在非ASCII文件路径上尝试它时,它会破坏程序 有没有办法读取这些数据?如果Exiv2接受Glib::ustrings,那就太好了C++ Exiv2:如何使用UTF8文件路径读取照片?,c++,exif,gtkmm,utf,exiv2,C++,Exif,Gtkmm,Utf,Exiv2,我正在使用GTKmm和exiv2读取EXIF元数据表单照片。但是Exiv2函数只接受std::string文件路径。。。当我在非ASCII文件路径上尝试它时,它会破坏程序 有没有办法读取这些数据?如果Exiv2接受Glib::ustrings,那就太好了 我对Windows和Linux的解决方案感兴趣。如果这是在Windows中,那么您可以使用 干杯,好的,我有一个解决办法 您只需要使用函数Glibmm::locale\u from_utf8将utf8字符串转换为stdascii字符串。 以下是
我对Windows和Linux的解决方案感兴趣。如果这是在Windows中,那么您可以使用 干杯,好的,我有一个解决办法 您只需要使用函数Glibmm::locale\u from_utf8将utf8字符串转换为stdascii字符串。 以下是一个例子:
void get_exif_data(const Glib::ustring &image_src)
{
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(Glib::locale_from_utf8(image_src));
image->readMetadata();
Exiv2::ExifData &exifData = image->exifData();
Exiv2::ExifData::const_iterator it = exifData.begin();
for(it;it!=exifData.end();it++) cout << it->key() + ": " + it->getValue() << endl;
}
请使用适当的操作系统进行标记。请注意,这并不保证有效。并非所有文件系统都支持短路径名,在NTFS上,它是可选的,即可以关闭。