CStringW 和 CStringA






4.69/5 (3投票s)
2002 年 6 月 30 日

139511

1273
WTL 的 CStringW 和 CStringA
引言
在进行无休止的字符串编程后,我厌倦了字符串转换,因此将 CString 分裂为 UNICODE 和 ANSI 版本(CStringW
和 CStringA
)。我复制了 WTL 字符串类,并将内部数据表示从 TCHAR
替换为 wchar_t
用于 CStringW
,以及 char
用于 CStringA
,修改了所有依赖于内部数据表示的函数。
这些类的行为与 CString
完全相同。只需像包含 "atlmisc.h" 一样包含 "StringA.h" 和 "StringW.h"。 _ATL_MIN_CRT
同样受支持。 这与 MFC 7.0 的做法相同,顺便说一下,这给了我灵感。
如果想在调试时查看 Unicode 字符串,请不要忘记在“工具/选项/调试/显示 Unicode 字符串”中打开它。默认情况下未启用此选项。
此外,您应该修改 Autoexp.dat 文件,以便像您习惯的那样查看 CStringW 和 CStringA 的内容。
将以下两行添加到 [AutoExpand] 部分
CStringW =<m_pchData,su> CStringA =<m_pchData,s>
示例
#include "StringA.h" #include "StringW.h" CStringW sTestW( L"Test" ); CStringA sTestA( "Test" ); // convert CStringW sConvertW = sTestA; CStringA sConvertA = sTestW;
我无法测试所有函数,可能缺少一些构造函数。 如果您发现错误或有任何建议,请随时在讨论中添加消息。
希望您喜欢并使用它。
Oskar