手机
当前位置:查字典教程网 >编程开发 >C语言 >VC下实现fopen支持中文的方法
VC下实现fopen支持中文的方法
摘要:VC的fopen函数第一个参数是constchar*,一旦遇到中文文件名就难以应付了,如果中文是UTF8编码的话,我们还可以用下列代码将其转...

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支持中文的方法】相关文章:

C++中this指针的用法及介绍

基于typedef的用法详解

自己实现strcpy函数的实现方法

用C++实现单向循环链表的解决方法

C语言实现静态链表的方法

用C实现PHP扩展 Fetch_Url 类数据抓取的方法

基于c的for循环中改变变量值的问题

VC++开发中完美解决头文件相互包含问题的方法解析

结构体类型数据作为函数参数(三种方法)

C++ 关于STL中sort()对struct排序的方法

精品推荐
分类导航