考虑以下简单代码:
GetDlgItemText(IDC_EName,LPTSTR(cName),11);
k=strlen(cName);
我想得到用户放在编辑框中的String的长度,但我有 错误的结果K = 1(总是),因为它是unicode字符串,它得到 第一个字符,第二个字符为null,我不知道如何解决它。 欢迎任何评论。 的问候,
答案 0 :(得分:2)
通过调用GetDlgItemText()
,可以返回字符串的长度,或更准确地说,复制到输出缓冲区的字符(不是字节)的数量。
您还可以直接检查字符串的长度。由于您使用ANSI / Unicode兼容的宏(例如LPTSTR
),因此应使用兼容ANSI / Unicode的strlen函数:_tcslen(cName)
_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