Форум программистов, компьютерный форум CyberForum.ru

STL. Алгоритм find(). Игнорировать регистр - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как записать Short в два char'a? http://www.cyberforum.ru/cpp-beginners/thread842570.html
Есть переменная типа short необходимо записать ее в чаровский массив... как то там через указатели как я хз((((
C++ Определенный размер окна при консольном выводе Доброго времени суток. Возникла такая проблема. Пишу я в geany в windows, подключен gnu c++. При выполнении программы вызывается командная строка, в которой: во-первых окно можно делать любых размеров (но это пол беды), а во-вторых справа присутствует scroll bar, наличие которого нежелательно, так как мне надо выводить определенную таблицу, и с помощью клавиш ее скролить. Поэтому было бы... http://www.cyberforum.ru/cpp-beginners/thread842569.html
C++ Создание обработки исключений на даты
Доброго времени суток! Как создать обработку исключительных ситуаций на неверно введенные даты?
Ошибка 0BH проверка состояния стандартного входного устройства C++
Программа на С++ 3.11,помогите сделать: Если символ можно вводить со стандартного выходного устройства,то функция возвращает в регистре AL значение FFH.В противном случае в регистре AL возвращается значение 00H.
C++ cin без перехода http://www.cyberforum.ru/cpp-beginners/thread842550.html
Доброе время суток! как ввести дав числа не переходя на следующюю строку, а через пробел? что бы в консоли выглядело приблизительно так введите два числа А и В целого типа 4 5 для продол.......
C++ [Задача] Найдите общее количество проданных за день дисков с классической, эстрадной, джазовой и другой музыкой. Найдите общее количество проданных за день дисков с классической, эстрадной, джазовой и другой музыкой. Названия направлений и количество продаж хранятся в соответствующих массивах. Определите направления, по которым количества продаж были ниже среднего. подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
19.04.2013, 14:59     STL. Алгоритм find(). Игнорировать регистр
fuzzytoozy, Написать свой компаратор определенно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
std::string to_lower_copy(std::string upper)
{
   std::transform(upper.begin(), upper.end(), upper.begin(), tolower);
}
 
bool CompareIgnoringCase(const std::string& current, const std::string& to_find)
{
   return to_lower_copy(current) == to_lower_copy(to_find);
}
 
int main()
{
  // fill vector etc.
  find_if(names.begin(), names.end(), bind2nd(ptr_fun(CompareIgnoringCase), SearchName));
}
А можно и оптимизировать слегка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
std::string to_lower_copy(std::string upper)
{
   std::transform(upper.begin(), upper.end(), upper.begin(), tolower);
}
 
struct CompareIgnoringCase : public std::unary_function<std::string, bool>
{
public:
   CompareIgnoringCase(const std::string& s) : to_find(to_lower_copy(s)) {}
   result_type operator () (const argument_type& s)
   {
      return to_lower_copy(s) == to_find;
   }
private:
   std::string to_find;
};
 
find_if(v.begin(), v.end(), CompareIgnoringCase(SearchName));
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru