Unicode Strlen эквивалент в MFC - PullRequest
       16

Unicode Strlen эквивалент в MFC

0 голосов
/ 23 августа 2011

Рассмотрим следующий простой код:

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

k=strlen(cName);

Я хочу получить длину строки, которую пользователь помещает в поле редактирования, но у меня неверный результат K = 1 (всегда), потому что это строка в юникоде и онаполучить первый символ, а второй ноль, и я не знаю, как это исправить.Любые комментарии приветствуются.С уважением,

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

Длина строки или, точнее, количество символов (не байтов), скопированных в выходной буфер, возвращается вашим вызовом GetDlgItemText().

Вы также можете проверить длину строки напрямую. Поскольку вы используете ANSI / Unicode-совместимые макросы, такие как LPTSTR, вам следует использовать ANSI / Unicode-совместимую функцию strlen: _tcslen (cName)

_tcslen() разрешается в strlen() при компиляции в ANSI / MBCS и в wcslen() при компиляции в Unicode.

0 голосов
/ 23 августа 2011

Использование 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

...