wsk3q

导航

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
}

 

posted on 2021-07-29 11:10  wsk3q  阅读(273)  评论(0编辑  收藏  举报