MFC 中的 Unicode strlen 等效项

Posted

技术标签:

【中文标题】MFC 中的 Unicode strlen 等效项【英文标题】:Unicode strlen equivalent in MFC 【发布时间】:2011-08-23 16:56:50 【问题描述】:

考虑以下简单代码:

GetDlgItemText(IDC_EName,LPTSTR(cName),11);

k=strlen(cName);

我想获取用户在编辑框中输入的字符串的长度,但我有 错误的结果 K=1 (总是),因为它是 unicode 字符串并且它得到 第一个字符和第二个字符为空,我不知道如何修复它。 欢迎任何评论。 问候,

【问题讨论】:

【参考方案1】:

字符串的长度,或者更准确地说是复制到输出缓冲区的字符(不是字节)的数量,由您对GetDlgItemText() 的调用返回。

您也可以直接检查字符串的长度。由于您使用 ANSI/Unicode 兼容的宏,例如 LPTSTR,您应该使用 ANSI/Unicode 兼容的 strlen 函数:_tcslen(cName)

_tcslen() 在编译为 ANSI/MBCS 时解析为 strlen(),在编译为 Unicode 时解析为 wcslen()

【讨论】:

【参考方案2】:

使用wcslen()http://msdn.microsoft.com/en-us/library/78zh94ax%28v=vs.80%29.aspx

当然你可以这样做:

k = GetDlgItemText(IDC_EName,LPTSTR(cName),11);

因为返回值指定了复制到缓冲区的字符数。 http://msdn.microsoft.com/en-us/library/ms645489%28v=vs.85%29.aspx

【讨论】:

以上是关于MFC 中的 Unicode strlen 等效项的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中是不是有与 MFC OnUpdate 等效的功能?

.NET 等效于 MFC 函数 SetModifiedFlag

在 MFC C++ 中将 char 数组转换为 UNICODE

MFC 是不是有等效的 JPanel

TypeScript 中的 querySelectorAll 等效项

猪中的组 concat 等效项?