ATL::CStringT与std::basic_string

我们再来看看神奇的CString,前面其实也提到过的,在Visual C++中,CString实际上是对模板类CStringT的一个特化版本,TCHAR 是个变色龙,因此CString也是一个变色龙:

 
 
  1. typedef CStringT< TCHAR, StrTraitMFC< TCHAR > > CString; 

CStringT继承于CSimpleStringT模板类,它们之间的继承关系如图4-15所示。

 
图4-15  CStringT模板类

此外,还有两个类,它们分别对应于字符串的ANSI和宽字符版本:

 
 
  1. typedef CStringT< wchar_t, StrTraitMFC< wchar_t > > CStringW;  
  2. typedef CStringT< char, StrTraitMFC< char > > CStringA; 

也就是说,一般情况下,我们只推荐使用CString,它会根据字符集环境的设置自动适应。如果需要在动态环境下强制设定字符集,比如:你正在开发一个服务器的客户端程序,服务器它只认识char,那么你就要显式地指定CStringA或CStringW。

标准C++中的std::string也是一个basic_string模板类的特化版本:

 
 
  1. typedef basic_string<char> string; 

与其相关的宽字符版本:

 
 
  1. typedef basic_string<wchar_t> wstring; 

由上可以清晰看出,string代表ANSI版本,wstring代表宽字符版本。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值