我应该将 CString、basic_string <TCHAR>或其他东西与 ATL/WTL 一起使用吗?

Should I use CString, basic_string<TCHAR>, or something else with ATL/WTL?

本文关键字:ATL WTL 一起 basic CString string 我应该 gt TCHAR lt 其他      更新时间:2023-10-16

我在过去的几天里只学了一点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 ?考虑到可执行大小(不包括共享库)可移植性/兼容性,这样做有什么好处吗?

对于ATL/MFC/WTL,我倾向于坚持使用CString。如果你使用这些框架,你就没有太多的可移植性选择;你知道他们怎么说的:When in Rome ...

此外,CString确实有一些细节

  • 您可以使用CString::LoadString
  • 从可执行文件中加载资源字符串
  • 使用CString::GetBuffer/ReleaseBuffer
  • 直接访问内部字符串缓冲区
  • CStringA &CStringW
  • 使用CString::Format
  • 执行printf -like格式化

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

我想我还是用STL吧