C++11是否引入了一种不区分大小写的字符串比较算法

Did C++11 introduce a case-insensitive string comparison algorithm?

本文关键字:大小写 不区 字符串 算法 比较 一种 是否 C++11      更新时间:2023-10-16

刚刚在GCC 4.8上移到C++11,如果能从boost::iequals移到STL,那就太好了。我在网间搜索了一下,但没有看到任何迹象表明std::iequals或新的std::basic_string方法在STL中原生地支持这一点。

如果C++11中不存在这种情况,那么自C++03以来,解决此问题的方法是否发生了变化(即不同的解决方案?),或者这里仍然首选boost?

提前谢谢

不,C++11没有引入不区分大小写的字符串比较函数。你现在需要坚持Boost。

希望这能有所帮助!

没有本地字符串比较,但有了丰富的STL,您可以非常简单地编写自己的东西:

`

bool caseInsensitiveCmp(wstring str1, wstring str2)
    {
        if ( str1.size() != str2.size())
            return false;
        else
        return (str1.empty() | str2.empty()) ? 
                false :
                std::equal(str1.begin(), str1.end(),str2.begin(),
                    [](wchar_t a, wchar_t b)
                    {
                        return tolower(a) == tolower(b);
                    }
                );
    }`

第一个检查是防止std:equals在不同长度上进行比较。