C ++,VS13 GetModuleFileNameA不返回特殊字符

时间:2015-09-04 19:32:44

标签: c++ winapi

我正在尝试获取当前.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;
}

不幸的是,它没有给出正确的输出。看起来像: none

我尝试了一些其他的wstring来转换字符串,遗憾的是没有成功。 我的问题是:是否可以将带有特殊字符的wstring转换为字符串?如果是,那怎么样?我的程序正在使用boost库。

0 个答案:

没有答案