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的长度不能灵活设置,读者可根据自身需求进一步加以完善!

以上是 VC下实现fopen支持中文的方法 的全部内容, 来源链接: utcz.com/z/345189.html

回到顶部