我正在尝试获取当前.exe文件的路径。我正在使用功能:
std::string getexepath()
{
char result[MAX_PATH];
return std::string(result, GetModuleFileNameA(NULL, result, MAX_PATH));
}
包含.exe文件的文件夹是(俄语):
C:\Users\monav\Desktop\русский\
不幸的是,函数返回:
C:\Users\monav\Desktop\??????\
所以我尝试使用:
wchar_t result[MAX_PATH];
wstring wtf = std::wstring(result, GetModuleFileNameW(NULL, result, MAX_PATH));
它给出正确的输出(当我在MessageBoxW中测试它时),但是我必须使用字符串而不是wstring(我的代码很长,并且“exepath”在很多地方使用)。所以我尝试使用:
将wstring转换为字符串string ws2s(const std::wstring& wstr)
{
typedef std::codecvt_utf8<wchar_t> convert_type;
std::wstring_convert<convert_type, wchar_t> converter;
std::string converted_str = converter.to_bytes(string_to_convert);
return converted_str;
}
我尝试了一些其他的wstring来转换字符串,遗憾的是没有成功。 我的问题是:是否可以将带有特殊字符的wstring转换为字符串?如果是,那怎么样?我的程序正在使用boost库。