刚刚转到GCC 4.8上的C ++ 11,很高兴离开boost::iequals
而转向STL。我搜索了互联网,但我没有看到任何std::iequals
或新std::basic_string
方法的迹象,以便在STL中本地支持这种方法。
如果在C ++ 11中不存在这种情况,那么自C ++ 03以来解决这个问题的方法是否有所改变(即不同的解决方法?),或者这里的提升仍然是首选?
提前致谢。
答案 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来进行无差异的比较。