Безопасные функции Tchar-параметр подсчета для константов UTF-8

StackOverflow https://stackoverflow.com/questions/2993429

Вопрос

Я переношу библиотеку из Чар в Тар. Параметр подсчета этого фрагмента, согласно MSDN, - это количество мультибитных символов, а не количество байтов. Итак, я понял это правильно? Мои свойства проекта в VC9 говорят «Использовать набор символов Unicode», и я думаю, что это правильно, но я не то, как это влияет на мой параметр графа.

_tcsncmp(access, TEXT("ftp"), 3); //or do i want _tcsnccmp?

«Поддерживается только на платформах Windows, _MBSNCMP и _MBSNBCMP являются многобитные версии STRNCMP.

_tcsnccmp и _tcsncmp являются соответствующими общими функциями для _mbsncmp и _mbsnbcmp соответственно. _tccmp эквивалентен _tcsnccmp. "

Аналогичный вопрос - _tcslen vs _tcsclen.

Это было полезно?

Решение

Да, вы понимаете это правильно.

Вопрос, однако, заключается в том, почему вы переносите его в Tchar - что -то, что чувствительно к определению _unicode.

Почему бы не использовать UTF8 и char*?

Другие советы

TCHAR это тип, который составляет 8 или 16 бит в зависимости от того, независимо от того, _UNICODE определено. Но UTF-8 всегда использует 8-битные кодовые блоки, поэтому используя TCHAR глупый. Просто используйте char.

TCHAR привязан к существованию двух версий API Windows: «A» функции, которые используют устаревшие 8-битные кодовые страницы, и функции «W», которые используют UTF-16. UTF-8 не поддерживается. Анкет Вы можете использовать UTF-8 в Windows, явно преобразив свои строки UTF-8 в UTF-16 для вызовов API, но вы не получите никакой помощи от _UNICODE или же TCHAR.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top