Мне нужно было найти регистронезависимый поиск, и я нашел следующий код, который сделал трюк
bool ci_equal(char ch1, char ch2)
{
return toupper((unsigned char)ch1) == toupper((unsigned char)ch2);
}
size_t ci_find(const string& str1, const string& str2)
{
string::const_iterator pos = std::search(str1. begin ( ), str1. end ( ), str2.
begin ( ), str2. end ( ), ci_equal);
if (pos == str1. end ( ))
return string::npos;
else
return pos - str1. begin ( );
}
Это заставило меня задуматься, что нужно сделать, чтобы сделать эту функцию членом функции 'string'так что это можно назвать так:
string S="abcdefghijklmnopqrstuv";
string F="GHI";
S.ci_find(F);
Я понимаю, что есть много проблем с преобразованием регистра в неанглийских языках, но меня интересует не этот вопрос.
Бытьнеофит, я быстро заблудился среди контейнеров и шаблонов.
Есть ли еще способ сделать это?Может ли кто-нибудь указать мне пример чего-то подобного?