ATL与MFC中的CString

       在ATL和MFC中都可以使用CString类来处理字符串,如果在MFC中要使用ATL中的CString,需要使用名字空间ATL::CString。在书写中,可以使用CStringT,CStringA,CStringW三种格式,如果是UNICODE工程,CStringT等同于CStringW,如果是ANSI工程,CStringT等同于CStringA.下面介绍几个常用的CString使用技巧。

 

1.模仿.NET中的split方法

      在.NET里的string类中有个split方法,即传入一个字符参数,根据这个参数来分割字符串,然后返回一个string数组。而CString 的Tokenize方法也同样可以达到这个效果。以下看示例代码

上述代码的含义,即对 videoInfo字符串以关键字'_'进行分割,然后将分割的内容传入m_list容器中,这种方法对于在ATL或者MFC中分割字符串很有帮助。

 

2.判断CString为空的高效方法

   在程序中往往会对CString判断是否为空,方法有几种,比如GetLength()是否为零,或者直接判断是否等于_T(""),或者使用IsEmpty()方法来判断。
    在实际使用时,建议使用IsEmpty()方法,其他方法可能占用线性时间。

 

3.和ATL的USES_CONVERSION宏配合

      如果在使用A2W或者W2A方法,需要在该函数的开头使用USES_CONVERSION;宏,这样就可以很方便的在代码中转换ANSI和UNICODE,比如
USES_CONVERSION;
CStringW  support;
support = A2W(Attri->Value());
其中需要说明的是,对于转换的变量,可以是一个CStringA对象,可以是一个char*指针,编译器会对上述表达进行相应的转换。

 

4.字符串的判断

      针对两个字符串,可能存在三种情况,大于、等于、小于,Compare和CompareNoCase都可以进行字符串的判断,CompareNoCase没有进行大小写的判断。

 

5.在COM组件的接口传递

      在COM组件中,常使用BSTR或者BSTR*来进行参数的传递,对于外部的BSTR传入,可以在CString的构造函数中承接这个BSTR,比如
STDMETHODIMP CMessageSignIn::SetUserName(BSTR pUserName)
{
   CString userName(pUserName);
   return S_OK;
}
在上述的函数中,构造函数承接了BSTR的参数值。
如果是想分配一个值给外部BSTR*,可以使用AllocSysString()方法

 

6.获取临时文件夹的路径

CStringW tmpPath;
tmpPath.GetEnvironmentVariable( _T("TEMP") );
tmpPath += _T("//UserContent.ini");

在上述方法中,GetEnvironmentVariable传入参数后,就可以获得当前临时文件夹的路径了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值