我正在使用 TinyXML2 从磁盘加载 xml 文档。
文件 (configFileName) 的路径是wstring,我将其转换为字符串,如下所示:
tinyxml2::XMLDocument doc;
std::string fileName(configFileName.begin(), configFileName.end());
doc.LoadFile(fileName.c_str());
这可行,但有时我的程序在双字节操作系统(如中文或韩文)上运行,并且上面从 wstring 到 string 的转换会丢失字符。
如何加载如下路径:
wstring wPathChinese = L"C:\\我明天要去上海\\在这里等我\\MyProgram";
编辑
我尝试了以下方法来转换字符串,但它仍然会破坏中文字符:
std::string ConvertWideStringToString(std::wstring source)
{
//Represents a locale facet that converts between wide characters encoded as UCS-2 or UCS-4, and a byte stream encoded as UTF-8.
typedef std::codecvt_utf8<wchar_t> convert_type;
// wide to UTF-8
std::wstring_convert<convert_type, wchar_t> converter;
std::string converted_str = converter.to_bytes(source);
return converted_str;
}
string pathCh2 = ConvertWideStringToString(wPathChinese);