首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

什么时候应当用CAtlString而不是CComBSTR

2013-09-07 
什么时候应该用CAtlString而不是CComBSTR?同理,什么场景更适合CComBSTR而不是CAtlString? 我感觉CAtlStrin

什么时候应该用CAtlString而不是CComBSTR?
同理,什么场景更适合CComBSTR而不是CAtlString? 

我感觉CAtlString并没有特别的存在价值,它和CString以及标准c++的std::string的实现似乎很类似啊。
为什么要单独弄一个CAtlString出来呢? ATL里面已经有了CString这个东西了。

还请高手指点迷津!
[解决办法]
http://technet.microsoft.com/zh-cn/library/5bzxfsea(v=vs.71)
下面有说明了, CAtlString更像是CString,而CComBSTR是多是组件才使用的,是宽字节的
[解决办法]
CAtlString 就是 CString呀

#ifndef _ATL_CSTRING_NO_CRT
typedef CStringT< wchar_t, StrTraitATL< wchar_t, ChTraitsCRT< wchar_t > > > CAtlStringW;
typedef CStringT< char, StrTraitATL< char, ChTraitsCRT< char > > > CAtlStringA;
typedef CStringT< TCHAR, StrTraitATL< TCHAR, ChTraitsCRT< TCHAR > > > CAtlString;
#else  // _ATL_CSTRING_NO_CRT
typedef CStringT< wchar_t, StrTraitATL< wchar_t > > CAtlStringW;
typedef CStringT< char, StrTraitATL< char > > CAtlStringA;
typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
#endif  // _ATL_CSTRING_NO_CRT

#ifndef _AFX
typedef CAtlStringW CStringW;
typedef CAtlStringA CStringA;
typedef CAtlString CString;
#endif

[解决办法]
1、无论是MFC还是ATL,他们的CString都是同一套代码,实际都是CAtlString
2、CComBSTR专用于COM。但是CComBSTR和CString互转都非常方便
3、别拿CString跟std::string比较,string除了跨平台方便,完全是个鸡肋,要什么功能没什么功能,而CString很强,要什么有什么。

热点排行