ASCII 转换为UNICODE

 

 

方法一: 使用MultiByteToWideChar

 

         


CFile file(strPath,CFile::modeRead|CFile::typeBinary);

 

int num=file.GetLength();   // 得到的是文件字节(BYTE)的数目,而不是字数
char *read;

read=new char[num];

file.Read(read,num);   //将字符串从文件中读取到read动态数组中,num表示从文件中读取num个BYTE

 

 

WCHAR *wword;      //Unicode 宽字符类型
wword=new WCHAR[num];

if (wword==NULL)
{
 free(wword);
}

memset(wword,0,num*sizeof(WCHAR));    // 对分配的空间进行初始化为0, 初始化为0很重要,因为cstring也是以0为结束符的
MultiByteToWideChar(CP_ACP,0,read,num,wword,num); //将保存在read数组中的num个字节 转换到 wword中,  wword空间可能会有剩余,所以应该先对其空间进行初始化为0的操作

 

for (int i=0;i<num;i++)
{
 strText+=wword[i];                         

}       //将Unicode宽字符数组中的文字 置入CString串中,因CString以0为结尾,所以当wword剩余空间对cstring字符串没影响,因为其已经被初始化为0了 

 

file.Close();

delete wword;
delete read;
m_RichEdit.SetWindowText(strText);

 

源码:

 

 

 

 

方法二:使用USES_CONVERSION  

 

            此方法比较简单

    

            共分两部:

            第一步:   用一数组保存待转换的字符串,字符串必须以'/0'结束

 

            第二步:  开始转换,将结果保存在CString 类对象中

           

 

CFile file(strPath,CFile::modeRead|CFile::typeBinary);

 

int length=file.GetLength();

 

char *read=new char[length+1];   //  定义一动态数组,数组大小为文件长度+1,这个1用来存放文字串的结束符'/0'

 

file.Read(read,length);

read[length]='/0';         //   必须要加字符串结束符,否则转换会出错

 

USES_CONVERSION;      // 开始转换

CString str=A2W(read);

m_RichEdit.SetWindowText(str);

 

源码:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水迎朝阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值