程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> VC下完成fopen支撐中文的辦法

VC下完成fopen支撐中文的辦法

編輯:關於C++

VC下完成fopen支撐中文的辦法。本站提示廣大學習愛好者:(VC下完成fopen支撐中文的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是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的長度不克不及靈巧設置,讀者可依據本身需求進一步加以完美!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved