小编Dan*_*ove的帖子

在 C++ 中使用 UTF-8 字符串正确检查回文

当试图回答一个问题时,如何在回文中使用入队、出队、推送和窥视?,我建议可以通过以下方式找到回文std::string

bool isPalindrome(const std::string str)
{
    return std::equal(str.begin(), str.end(), str.rbegin(), str.rend());
}
Run Code Online (Sandbox Code Playgroud)

对于 Unicode 字符串,我建议:

bool isPalindrome(const std::u8string str)
{
    std::u8string rstr{str};

    std::reverse(rstr.begin(), rstr.end());

    return str == rstr;
}
Run Code Online (Sandbox Code Playgroud)

我现在认为当字符串中有多字节字符时这会产生问题,因为多字节字符的字节顺序也被颠倒了。此外,某些字符在不同的语言环境中将彼此等效。因此,在 C++20 中:

  1. 你如何使多字节字符的比较健壮?
  2. 当多个字符之间可以等效时,如何使比较对不同的语言环境具有鲁棒性?

c++ c++20

1
推荐指数
1
解决办法
60
查看次数

标签 统计

c++ ×1

c++20 ×1