【发布时间】:2011-11-04 17:57:11
【问题描述】:
这几天我只学了一点ATL(在意识到纯Win32有多痛苦之后),还了解了WTL和MFC,据我所见,有很多不同的字符串适合我的课程。
我用做了这样的事情:
#include <tchar.h>
#include <string>
namespace std { typedef basic_string<TCHAR> _tstring; }
然后在我的代码中到处使用_tstring。在学习了一些ATL之后,我了解到atltmp.h中有一个CString类。显然,WTL 中还有另一个 CString 类,还有一个 MFC 中的 CString 类。
我不知道我是否会坚持使用 ATL,或者我是否会切换到 WTL、MFC 或其他方式。但是现在,我正在将我的 Win32 代码转换为 ATL,我不确定要更改什么以及保留什么。
我应该让我的字符串使用CString 而不是_tstring?考虑到可执行文件大小(不包括共享库)和可移植性/兼容性,这样做有什么好处吗?
【问题讨论】:
-
唯一可以合法添加到
std命名空间的是模板特化。另外,我不了解WTL,但是ATL和MFC中的CString类是一样的,它们都是CSimpleStringT的typedef(我认为) -
@Praetorian:嗯,我不介意在个人项目中从事这种非侵入性的非法活动。 :P
-
第一次了解 CString 时,我在 Google 上查找了它。事实证明,NSFW。
-
@Toolbox:哦,哈哈,我从来没有尝试过(我总是这样做
CString class)。谢谢你的提醒。 XD -
@Praetorian :
CString在 ATL 和 MFC 中确实是相同的,但是 ATL 被认为是规范所有者(毕竟它在命名空间ATL中......)。我记得 WTL 没有自己的——我认为它只是使用 ATL。