什么时候应当用CAtlString而不是CComBSTR
什么时候应该用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呀
------解决方案--------------------
1、无论是MFC还是ATL,他们的CString都是同一套代码,实际都是CAtlString
2、CComBSTR专用于COM。但是CComBSTR和CString互转都非常方便
3、别拿CString跟std::string比较,string除了跨平台方便,完全是个鸡肋,要什么功能没什么功能,而CString很强,要什么有什么。
同理,什么场景更适合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很强,要什么有什么。