强大的CString

   最近打杂,在搞ansi版本转为unicode办。最主要的就是其中涉及到字符串那些函数了。做这些工作本来就是使用那些个多字节和宽字节直接的转换为主,还有就是将那些字符串函数用t版相应函数进行替换即可。不过这其中有一点是值得欣慰的就是CString的强大之处的。在这其中CString是一个很强大的类。这个要怎么说呢,在Unicode工程中Cstring中保存的数据是使用wchar类型的。ms出来提供CString还有CStringA和CStringW,它们的数据类型就不言而喻了。

  这里我要将的一个就是宽字节和多字节之间的转换问题。它们直接的转换我们可以借用MultiBytesToWideChar和WideCharToMultiBytes进行。在大部分场合下,使用CString可以方便的做到多字节和宽字节的转换,我要说的意思就是Char类型字符串可以简单的赋值给给CString实例,而不用担心的是否会在CStirng实例中保存的是乱码。而CString赋值给CStringA的数据你也不要担心不能变成多字节的了。因为,CString有重载=,在赋值的使用会进行判断是否直接进行数据的拷贝,还是需要进行多字节和宽字节直接的转换。举个例子吧,假设现在的工程是unicode的,其中这样代码是这样。

   CString a,b;

   CStirngA c;

   char d[] = "测试用abcd";

   a = d;

   c = a;

   b = a;

 

上面简单的几句,直接的表达了我要说的问题。a =c 直接的赋值过程,在其中是有进行MultiByteToWideChar函数转换的。而在b=a的时候,并没有上面的转换,而是直接的数据拷贝操作。在c=a的过程也是一样的进行了WideCharToMultiByte的转换。不过需要注意的一点就在构造函数进行赋值是不可以的。如何判断当前的字符串是wchar还是char类型的呢。我没有自己的研究是否其中有什么标志。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值