我可以使用memcmp两个比较多字节的字符串吗
Can i use memcmp two compare multibyte characters string?
我正在尝试编写代码来比较两个字符串。在windows中,我可以使用strcmp,但我希望为多字节字符串编写,以便它与所有其他平台兼容我可以使用memcmp吗?如果没有,那么我可以使用任何其他API,或者我需要编写自己的API。
你必须小心。我不是Unicode/多字节编码方面的专家,但我知道在变音符号中,当两个字符串的字节不完全相同时,有时可以认为它们是相等的。建议使用预先测试过的API,因为字符串编码可能会变得非常混乱。
查看案例映射上的新旧内容。我想不出变音符号的参考,但如果我想了,我会发布它。
如果两个字符串使用相同的编码,则可以使用memcmp
。如果它们使用UTF-8,并且字符串不包含NULL字符(U+0000),则您甚至可以使用strcmp
,因为在没有NULL本身的情况下,0不会出现在UTF-8编码的字符串中。另一个选项是使用mbstowcs
将字符串转换为宽字符。
如果字符串都使用相同的编码,memcmp
将正常工作。但是,请记住,宽字符在不同的平台上有不同的大小。
如果字符串使用不同的编码,则需要ICU之类的库来处理它。
相关文章:
- 如何在C++中比较两个char数组
- 比较两个大小不等的映射c++
- 如何比较两个同名的预处理器宏?
- C++通过数字比较两个数字
- 关于比较两个无序数组并删除 a[] 中可以在 b[] 中找到的元素的问题
- 比较两个字符串后卡在无限循环中
- 比较两个节点坐标的最佳方法是什么?
- 比较两个公钥与OpenSSL API
- 如何比较两个函数的速度和性能
- 比较两个 constexpr 指针不是 constexpr?
- 比较两个 std::chrono::time_point 实例时出错
- 比较两个没有一行共同点的大文件
- 比较两个整数在C++中与未知 int 类型的相等性
- >操作员在比较两个C++容器时会怎么做?
- 如何在 c++ 中比较两个文本文件
- 与操作员比较两个计时时间点
- 在单元测试中,如何在不使用 operator== 的情况下比较两个对象,这可能会错过新成员?
- 如何获得比较两个向量对的子集
- 如何比较两个tm(来自ctime)变量
- 比较两个std::矢量/阵列,或者通常比较两个stl连续器