повышение:: ifind_first со станд.:: строковые объекты

Если бы ugly's проблема, я просто переключил бы таблицу стилей для пользовательской. Если Вы не хотите перезаписывать сгенерированный, можно использовать плагин Firefox как Стильный .

9
задан ElefantPhace 31 March 2013 в 20:48
поделиться

3 ответа

Вам нужно использовать boost :: iterator_range. Это работает:

  typedef const boost::iterator_range<std::string::const_iterator> StringRange;
  std::string str1("Hello world");
  std::string str2("hello");

  if ( boost::ifind_first(
          StringRange(str1.begin(), str1.end()),
          StringRange(str2.begin(), str2.end()) ) )
      std::cout << "Found!" << std::endl;

РЕДАКТИРОВАТЬ: Использование const iterator_range в typedef позволяет передавать временный диапазон.

13
ответ дан 4 December 2019 в 15:24
поделиться

Примерно так будет выполняться сравнение строк без учета регистра без изменения ни одной строки.

int nocase_cmp(const string & s1, const string& s2) 
{
  string::const_iterator it1=s1.begin();
  string::const_iterator it2=s2.begin();

  //stop when either string's end has been reached
  while ( (it1!=s1.end()) && (it2!=s2.end()) ) 
  { 
    if(::toupper(*it1) != ::toupper(*it2)) //letters differ?
     // return -1 to indicate smaller than, 1 otherwise
     return (::toupper(*it1)  < ::toupper(*it2)) ? -1 : 1; 
    //proceed to the next character in each string
    ++it1;
    ++it2;
  }
  size_t size1=s1.size(), size2=s2.size();// cache lengths
  //return -1,0 or 1 according to strings' lengths
  if (size1==size2)  {
    return 0;
  }
  return (size1<size2) ? -1 : 1;
}

0
ответ дан 4 December 2019 в 15:24
поделиться

(char *) str.c_str () фактически выполняет const_cast : const_cast (str.c_str ()) . Я очень сильно сомневаюсь, что нужно отбросить const для поиска по строке.

Я никогда не использовал boost :: ifind_first , но согласно документации , функция принимает два диапазона. Я полагаю там ' Как создать диапазон из строки? OTOH, я бы подумал, не идеальный ли диапазон для струны.

Может быть полезно публиковать полные сообщения об ошибках используемого компилятора.

0
ответ дан 4 December 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: