Поиск подстроки без учёта регистра [требует правки]

328
25 декабря 2016, 20:45

Нужно найти подстроку, в строке wstring, без учёта регистра. ОС - Windows.

static void CheckItem( boost::intrusive_ptr<IBaseTreeItem> root, const std::wstring & str, std::vector<boost::intrusive_ptr<IBaseTreeItem>> & res )
{
  boost::intrusive_ptr<IBaseTreeItem> item = root->GetFirstChild();
  while ( item )
  {
    std::wstring name;
    item->GetText( name );
    if ( name.find( str ) != std::wstring::npos ) // здесь нужен поиск подстроки без учёта регистра.
      res.push_back( item );
    CheckItem( item, str, res );
    item = item->GetNextSibling();
  }
}
Answer 1

Чтобы сделать быстро:

перевести строки в строчное представление так

std::transform(data.begin(), data.end(), data.begin(), ::tolower);

и уже потом искать вхождение.

Чтобы сделать оптимально:

Воспользуйтесь методом с предикатом из комменатриев под вопросом.

Если есть более удачные решения, буду рад их услышать.

READ ALSO
Qt custom geoservice plugin

Qt custom geoservice plugin

Использую Map компонент под QML и кровь из носа нужно сделать поддержку различных поставщиков карт, таких как Yandex, Google, Yahoo и тд

379
Синхронизация потоков с помощью Event c++

Синхронизация потоков с помощью Event c++

Необходимо, чтобы нить t4 ждала события просчета времени "time = 1000 * (getTime() - time);" и после этого запускаласьКак реализовать? Нужен именно Event (такое...

389
QSqlTableModel и таблица с одинарной кавычкой (MS SQL)

QSqlTableModel и таблица с одинарной кавычкой (MS SQL)

Всем привет в базе данных присутствуют таблицы, которые содержат одинарные кавычкиТаблицы содержащие кавычку в названии не выгружают данные...

404
Правильное наследование std::exception

Правильное наследование std::exception

Пытаюсь написать свой класс исключений

470