4

在过去的几天里,我只学了一点 ATL(在意识到纯 Win32 有多么痛苦之后),还了解了 WTL 和 MFC,据我所见,有很多不同的字符串类可用于我。

曾经做过这样的事情:

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

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

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

我应该让我的字符串使用CString而不是_tstring考虑到可执行文件大小(不包括共享库)可移植性/兼容性,这样做有什么好处吗?

4

2 回答 2

6

我的偏好是坚持使用CStringATL / MFC / WTL。无论如何,如果您使用这些框架,那么您就没有太多可移植性的选择。你知道他们说什么:When in Rome ...

此外,CString确实有一些细节

  • 您可以使用从可执行文件加载资源字符串CString::LoadString
  • 使用直接访问内部字符串缓冲区CString::GetBuffer/ReleaseBuffer
  • CStringA在&之间静默转换CStringW
  • 执行printf-like 格式化使用CString::Format
于 2011-08-26T18:18:26.993 回答
0

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

我想我会继续使用 STL,那么。

于 2011-09-08T07:34:50.783 回答