我应该使用CString,basic_string <tchar>,还是ATL / WTL的其他东西?</tchar>

时间:2011-08-26 18:06:19

标签: c++ string mfc atl wtl

我在过去几天才学到了一点ATL(在了解了纯Win32的痛苦程度之后)并且还了解了WTL和MFC,从我看到的,有很多不同的字符串我可以上课。

使用做这样的事情:

#include <tchar.h>
#include <string>
namespace std { typedef basic_string<TCHAR> _tstring; }

然后在我的代码中到处使用_tstring。在学习了一些ATL之后,我了解到CString中有一个atltmp.h类。显然,WTL中有另一个CString类,而MFC中还有另一个 CString类。

不知道我是否会坚持使用ATL,或者我是否会切换到WTL,MFC或其他东西。但是现在,我正在将我的Win32代码转换为ATL,我不确定要改变什么以及要保留什么。

我应该使用CString代替_tstring吗?这样做是否有任何好处,考虑 可执行文件大小(不包括共享库)可移植性/兼容性?

2 个答案:

答案 0 :(得分:6)

我的首选是坚持CString ATL / MFC / WTL。如果您正在使用这些框架,那么就不像您有很多可移植性选项;你知道他们说了什么:When in Rome ...

此外,CString确实有一些细节

  • 您可以使用CString::LoadString
  • 从可执行文件加载资源字符串
  • 使用CString::GetBuffer/ReleaseBuffer
  • 直接访问内部字符串缓冲区
  • CStringA&amp;之间静默转换CStringW
  • 执行printf - 使用CString::Format
  • 进行格式化

答案 1 :(得分:0)

我刚刚读到的内容是CString不支持空字符。

我想我会继续使用STL。