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