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

相关文章

  • C++中标准线程库的基本使用介绍

    C++中标准线程库的基本使用介绍

    大家好,本篇文章主要讲的是C++中标准线程库的基本使用介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Visual Studio Code安装和配置的教程

    Visual Studio Code安装和配置的教程

    这篇文章主要介绍了Visual Studio Code安装和配置,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • c语言冒泡排序和选择排序的使用代码

    c语言冒泡排序和选择排序的使用代码

    算法中排序是十分重要的,而每一个学习计算机的都会在初期的时候接触到这种排序,下面这篇文章主要给大家介绍了关于c语言冒泡排序和选择排序使用的相关资料,需要的朋友可以参考下
    2022-04-04
  • C语言二进制思想以及数据的存储

    C语言二进制思想以及数据的存储

    本文主要介绍了C语言的二进制思想以及数据的存储,这里对二进制和数据存储做了详细的说明,对开始学习C语言的同学比较有参考价值
    2016-07-07
  • C语言实现简单的计算器

    C语言实现简单的计算器

    这篇文章主要为大家详细介绍了C语言实现简单的计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • C语言malloc分配问题详解

    C语言malloc分配问题详解

    这篇文章主要介绍了c语言 malloc函数的分配问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • 如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?

    如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?

    本篇文章是对如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方的实现方法,进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言实现bmp图像平移操作

    C语言实现bmp图像平移操作

    这篇文章主要为大家详细介绍了C语言实现bmp图像平移操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++利用链表模板类实现简易队列

    C++利用链表模板类实现简易队列

    这篇文章主要为大家详细介绍了C++利用链表模板类实现一个简易队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 简单掌握C++中的函数模板

    简单掌握C++中的函数模板

    这篇文章主要介绍了C++中的函数模板,包括函数模板的声明和生成以及异常处理等基本知识,需要的朋友可以参考下
    2016-04-04

最新评论