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

时间:2014-09-10 03:15:12

标签: c++ c++11 boost stl

刚刚转到GCC 4.8上的C ++ 11,很高兴离开boost::iequals而转向STL。我搜索了互联网,但我没有看到任何std::iequals或新std::basic_string方法的迹象,以便在STL中本地支持这种方法。

如果在C ++ 11中不存在这种情况,那么自C ++ 03以来解决这个问题的方法是否有所改变(即不同的解决方法?),或者这里的提升仍然是首选?

提前致谢。

2 个答案:

答案 0 :(得分:10)

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

希望这有帮助!

答案 1 :(得分:0)

没有本地字符串比较,但是使用丰富的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来进行无差异的比较。