VC下實現fopen支持中文的方法
更新時間:2014年07月07日 17:02:18 投稿:shichen2014
這篇文章主要介紹了VC下實現fopen支持中文的方法,需要的朋友可以參考下
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");//此為原來的方法,遇到中文不能正確打開
上述函數仍有不夠完善之處,如參數strUnicode的長度不能靈活設置,讀者可根據自身需求進一步加以完善!
相關文章
關于CLion配置visual?studio(msvc)和JOM多核編譯的問題
這篇文章主要介紹了CLion配置visual?studio(msvc)和JOM多核編譯,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07