我正在移植一个从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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top