C++11 представил алгоритм сравнения строк без учета регистра?
просто перешел на C++11 на GCC 4.8 и было бы неплохо отойти от boost::iequals
в пользу STL. Я поискал в паутине, но не увидел никаких признаков std::iequals
или std::basic_string
методы для поддержки этого изначально в STL.
Если это не существует в C++11, изменился ли подход к решению этой проблемы с C++03 (т. е. разные обходные пути?), или boost все еще предпочтительнее здесь?
спасибо заранее.`
2 ответов
нет, 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 от сравнения по индифферентной длине.