_access在unicode字符集下使用的时候,传入的路径参数中含有中文字符要使用CP_ACP格式来转化,若使用CP_UTF8转化,则返回-1.
不包含中文,没影响。
CString m_csCon(_T("D:\\360安全浏览器下载\\usbcleaner20101017"));
int nLen = WideCharToMultiByte(CP_ACP,0,m_csCon.GetBuffer(),m_csCon.GetLength(),NULL,0,NULL,NULL);
char *ch = new char[nLen * sizeof(TCHAR)];
ZeroMemory(ch,nLen* sizeof(TCHAR));
int nWr = WideCharToMultiByte(CP_ACP,0,m_csCon.GetBuffer(),-1,ch,nLen,NULL,NULL);
afxDump<<_access(ch,0);//0
int nLen = WideCharToMultiByte(CP_UTF8,0,m_csCon.GetBuffer(),m_csCon.GetLength(),NULL,0,NULL,NULL);
char *ch = new char[nLen * sizeof(TCHAR)];
ZeroMemory(ch,nLen* sizeof(TCHAR));
int nWr = WideCharToMultiByte(CP_UTF8,0,m_csCon.GetBuffer(),-1,ch,nLen,NULL,NULL);
afxDump<<_access(ch,0);//-1