- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
在用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。(注意中间用逗号隔开)。 |
|