2

我正在将一个库从 char 移植到 TCHAR。根据 MSDN,此片段的 count 参数是多字节字符数,而不是字节数。那么,我做对了吗?我在 VC9 中的项目属性说“使用 unicode 字符集”,我认为这是正确的,但我不知道这会如何影响我的计数参数。

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

“仅在 Windows 平台上受支持,_mbsncmp 和 _mbsnbcmp 是 strncmp 的多字节版本。_mbsncmp 将最多比较 count 个多字节字符,_mbsnbcmp 将最多比较 count 个字节。它们都使用当前的多字节代码页。

_tcsnccmp 和 _tcsncmp 分别是 _mbsncmp 和 _mbsnbcmp 对应的通用函数。_tccmp 等同于 _tcsnccmp。”

一个类似的问题是_tcslen vs _tcslen。

4

2 回答 2

4

是的,你没看错。

然而,问题是为什么要将它移植到 TCHAR - 这对 _UNICODE 定义很敏感。

为什么不使用 UTF8 和 char*?

于 2010-06-07T21:58:11.180 回答
2

TCHAR是 8 位或 16 位的类型,具体取决于是否_UNICODE定义。但是 UTF-8总是使用 8 位代码单元,所以使用TCHAR起来很傻。只需使用char.

TCHAR与存在两个版本的 Windows API 相关:使用旧版 8 位代码页的“A”函数和使用 UTF-16 的“W”函数。 不支持 UTF-8。通过将 UTF-8 字符串显式转换为 UTF-16 以进行 API 调用,您可以在 Windows 上使用 UTF-8,但您不会从_UNICODEor获得任何帮助TCHAR

于 2010-06-09T00:11:12.347 回答