我使用tinyXml在FOLDERID_RoamingAppData下存储配置文件,换句话说,在C:\ Users \ USERNAME \ AppData \ Roaming下存储。 我使用以下序列(简化):
当文件名包含非拉丁语(例如希伯来语)字符时,我想知道如何加载文件/ SaveFile。
答案 0 :(得分:1)
由于Windows API不接受UTF8编码,因此没有可移植的方法来编码基于char
的变量(C-strings或std::string
s)中的Windows文件名。
幸运的是,TinyXml提供了LoadFile
的替代形式,接受FILE*
作为参数。您可以使用Windows _wfopen
获取此类句柄:这是一个代码段:
SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, NULL, &path);
FILE* xmlFile = _wfopen(path, L"r+");
m_doc.LoadFile(xmlFile);
相应的函数SaveFile
以相同的方式工作 - 在这种情况下,使用L"w"
作为_wfopen
调用的第二个参数来覆盖文件的先前版本。