TCHAR安全功能 - UTF-8常数计数参数
题
我正在移植一个从char到tchar的图书馆。根据MSDN的说法,该片段的计数参数是多键字符的数量,而不是字节数。那么,我得到了吗?我在VC9中的项目属性说“使用Unicode字符集”,我认为这是正确的,但是我不是如何影响计数参数。
_tcsncmp(access, TEXT("ftp"), 3); //or do i want _tcsnccmp?
“仅在Windows平台上支持,_MBSNCMP和_MBSNBCMP是STRNCMP的多键版。_MBSNCMP将比较大多数计数的多重型字符,并且_MBSNBCMP将在大多数计数中比较当前的多头字节。
_TCSNCCMP和_TCSNCMP分别是_MBSNCMP和_MBSNBCMP的相应通用函数。 _tccmp等于_tcsnccmp。”
一个类似的问题是_tcslen vs _tcsclen。
解决方案
是的,你做对了。
但是,问题是为什么要将其移植到TCHAR-对_unicode敏感的东西。
为什么不使用utf8和char*?
其他提示
TCHAR
是8或16位的类型,具体取决于是否 _UNICODE
被定义为。但是UTF-8 总是 使用8位代码单元,因此使用 TCHAR
很傻。只是使用 char
.
TCHAR
与Windows API的两个版本的存在有关:使用旧版8位代码页面和使用UTF-16的“ W”函数的“ A”函数。 UTF-8不支持. 。您可以通过将UTF-8字符串明确转换为UTF-16进行API调用,在Windows上使用UTF-8,但是您不会从中获得任何帮助 _UNICODE
或者 TCHAR
.
不隶属于 StackOverflow