我应该将 CString、basic_string <TCHAR>或其他东西与 ATL/WTL 一起使用吗?
Should I use CString, basic_string<TCHAR>, or something else with ATL/WTL?
我在过去的几天里只学了一点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吧
相关文章:
- ATL::CComContainedObject<contained>: C2259 无法实例化抽象类
- ATL OLE DB Consumer Templates 与 Microsoft OLE DB Driver for
- 在Visual Studio 2017上使用VC++ 2015工具链时缺少ATL标头
- C++ ATL | 找不到_InternalQueryInterface标识符
- 迁移到 Visual Studio 2015 时 ATL 不起作用
- COM 事件需要 C3702 atl
- ATL COM - EnumWindows 回调函数不适用于 IDispatch::Invoke
- C++COM ATL VariantChangeType 会导致 WSH 崩溃
- WinAPI - GetLastError 在通过 COM ATL DLL 调用时始终返回 0
- 如何在 WTL 项目上添加对话框
- MFC/DLL中缺少ATL :: CSTRINGT功能,该功能与Clang/vs-2019构建
- 如何使用 ATL/MSOLEDBSQL 启用连接资源池
- 如何将atl :: cimage转换为cv :: mat
- 错误 C4839:非标准地使用类 'ATL::CW2AEX<520>' 作为可变参数函数的参数
- 为什么*一切*在ATL / WTL中使用模板基类
- 如何在 ATL/WTL 对话框中注册自定义控件
- ATL和WTL有什么区别
- WinAPI Aero Glass without ATL/WTL/MFC/SDK/etc
- 我应该将 CString、basic_string <TCHAR>或其他东西与 ATL/WTL 一起使用吗?
- ATL/WTL是否仍然需要使用全局_Module变量