MFC中的Unicode strlen等价物

时间:2011-08-23 16:56:50

标签: unicode mfc strlen

考虑以下简单代码:

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

k=strlen(cName);

我想得到用户放在编辑框中的String的长度,但我有 错误的结果K = 1(总是),因为它是unicode字符串,它得到 第一个字符,第二个字符为null,我不知道如何解决它。 欢迎任何评论。 的问候,

2 个答案:

答案 0 :(得分:2)

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

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

编译为ANSI / MBCS时,

_tcslen()解析为strlen(),编译为Unicode时,<{1}}解析为wcslen()

答案 1 :(得分:0)

使用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