mingW下的stat()似乎不支持含有中文的UTF-8路径
mingW下的stat()似乎不支持含有中文的UTF-8路径,明明文件是存在的,还是返回-1。
设置locale解决不了问题,唯有转换成wchar_t来解决了。
static
std::wstring Str_utf8_wchar(const std::string& sutf8)
{
wchar_t wBuf[512];
//char aBuf[512]={0};
int num=MultiByteToWideChar(CP_UTF8, 0, sutf8.c_str(), sutf8.size(), wBuf, _countof(wBuf));
if(num<=0)
{
return L"";
}
wBuf[num]=0;
return wBuf;
}
static
int stat_utf8(const char* pstrUtf8,struct stat* pstat)
{
#ifdef _WIN32
std::wstring swPath = Str_utf8_wchar(pstrUtf8);
return wstat(swPath.c_str(), pstat);
#else
return stat(pstrUtf8, pstat);
#endif
}