65.9K
CodeProject 正在变化。 阅读更多。
Home

CStringW 和 CStringA

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (3投票s)

2002 年 6 月 30 日

viewsIcon

139511

downloadIcon

1273

WTL 的 CStringW 和 CStringA

引言

在进行无休止的字符串编程后,我厌倦了字符串转换,因此将 CString 分裂为 UNICODE 和 ANSI 版本(CStringWCStringA)。我复制了 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

© . All rights reserved.