我正在尝试编写代码来比较两个字符串。在windows中我可以使用strcmp,但我想写多字节字符串,以便它与所有其他平台兼容我可以使用memcmp吗?如果没有,那么我可以使用任何其他 API,或者我需要编写自己的 API。
问问题
1552 次
3 回答
5
你必须要小心。我不是 Unicode/多字节编码方面的专家,但我知道使用变音符号有时可以认为两个字符串在它们的字节不完全相同时相等。建议使用预先测试过的 API,因为字符串编码会变得非常混乱。
请参阅案例映射中的旧事物。我想不出变音符号的参考,但如果我这样做,我会发布它。
于 2012-02-27T06:33:38.763 回答
2
如果两个字符串使用相同的编码,您可以使用memcmp
. 如果他们使用 UTF-8 并且您的字符串不包含 NULL 字符 (U+0000),您甚至可以使用strcmp
,因为在没有 NULL 本身的情况下,0 不会出现在 UTF-8 编码的字符串中。另一种选择是使用将字符串转换为宽字符mbstowcs
。
于 2012-02-27T06:30:47.920 回答
1
如果字符串都使用相同的编码,memcmp
则可以正常工作。但是请记住,宽字符在不同平台上的大小不同。
如果字符串使用不同的编码,则需要 ICU 之类的库来处理它。
于 2012-02-27T06:21:57.653 回答