看流星社区

 找回密码
 注册账号
查看: 2490|回复: 0

VC中ReadFile读取ANSI格式文本文件并转换为unicode字串

[复制链接]

该用户从未签到

发表于 2013-5-16 16:58:37 | 显示全部楼层 |阅读模式
在用VC++6.0编写汉字录入练习程序过程中,自己是这样使用ReadFile读取ANSI格式文本汉字文件并转换为unicode字串的:

下面只给出实现的关键代码,其它出错处理等省略。
...
dwFileSize=GetFileSize(hFile,NULL); //检取文件字节大小
if(dwFileSize!=INVALID_FILE_SIZE)   //文件大小有效
{
  ansiPtr=new char[dwFileSize + 1];
  //把文件内容读入缓冲区
  ReadFile(hFile,(LPVOID)ansiPtr,dwFileSize,&dwBytesRead,NULL);
  //该句是必须的,否则将会有多余的怪码
  ansiPtr[dwFileSize]='\0';
  //首先获取将char字串转换为wchar_t后wchar_t的长度
  wcs_len=MultiByteToWideChar(CP_ACP,0,ansiPtr,-1,NULL,NULL);
  wcsPtr=new WCHAR[wcs_len + 1];  //分配内存空间
  if(wcsPtr!=NULL)
  {
   //将char字串转换为wchar_t字串
   MultiByteToWideChar(CP_ACP,0,ansiPtr,strlen(ansiPtr)+1,wcsPtr,wcs_len+1);
  }

delete[] ansiPtr;
  ...
}

    VC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以编写支持UNICODE的应用程序。
    打开[Project]->[Setting…]对话框,在C/C++标签对话框的“Preprocessor definitions:”中去除_MBCS,加上_UNICODE,UNICODE。(注意中间用逗号隔开)。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-16 08:40

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表