欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

VC下实现fopen支持中文的方法

来源:本站原创|时间:2020-01-10|栏目:C语言|点击:

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

上一篇:C++ 实现2048游戏示例

栏    目:C语言

下一篇:C语言安全编码之数值中的sizeof操作符

本文标题:VC下实现fopen支持中文的方法

本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/3629.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有