vc fopen函數的第一個參數是const char*,遇到中文文件名時很難處理,如果中文是utf8編碼,我們也可以用以下代碼將其轉換為Unicode,然后用wfopen函數打開文件,下面一起跟著武林技術頻道小編來了解吧!
代碼如下:
bool UTF8ToUnicode(const char* UTF8, wchar_t* strUnicode){ DWORD dwUnicodeLen; //轉換后Unicode的長度 TCHAR *pwText; //保存Unicode的指針// wchar_t* strUnicode; //返回值 //獲得轉換后的長度,并分配內存 dwUnicodeLen = MultiByteToWideChar(CP_UTF8,0,UTF8,-1,NULL,0); pwText = new TCHAR[dwUnicodeLen]; if (!pwText) { return false; } //轉為Unicode MultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen); //轉為CString wcscpy(strUnicode, pwText); //清除內存 delete []pwText; return true;}
這個函數的用法如下:
wchar_t strUnicode[260];UTF8ToUnicode(streamName, strUnicode);FILE* fid = _wfopen(strUnicode, L"rb");// FILE* fid = fopen(streamName, "rb");//此為原來的方法,遇到中文不能正確打開
上述是關于VC下實現fopen支持中文的方法,相信大家都了解了,其實很多的功能還不完善,如參數結構碼長度設置不靈活,讀者可根據自身需要進一步完善!
|
新聞熱點
疑難解答
圖片精選