Russian Qt Forum
Май 02, 2024, 12:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Сортировка строк и QRegExp  (Прочитано 8824 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Октябрь 10, 2014, 13:32 »

Ну хорошо, пусть надо сортировать "по числу".
Пожалуйста:
Код
C++ (Qt)
lst.sort([](const std::string& str1, const std::string& str2)->bool
       {
           sregex regex = (s1 = +_d) >> *~_d;
           smatch what1, what2;
           if (regex_search(str1, what1, regex) && regex_search(str2, what2, regex))
               return std::stoi(what1[1]) < std::stoi(what2[1]);
 
           return false;
 
       });
 
И к чему весь этот огород с regexp? Ведь stoi сводится к strtol который уже делает все что нужно: конвертирует строку в число до того символа когда конверсия невозможна. Можно было просто записать
Код
C++ (Qt)
lst.sort([](const std::string& str1, const std::string& str2)->bool
       {
          return std::stoi(str1) < std::stoi(str2);
       );
 
Но, видимо, Вам хотелось пустить пыль в глаза "чем-то особенным" (кто такие s1 _d - хз). Ваш код постоянно показывает "широту Ваших познаний" - но далековато от решаемой задачи  Улыбающийся

Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #16 : Октябрь 10, 2014, 13:49 »

Цитировать
Ведь stoi сводится к strtol который уже делает все что нужно: конвертирует строку в число до того символа когда конверсия невозможна. Можно было просто записать
Да, согласен, здесь можно было бы и без xpressive обойтись..
Код
C++ (Qt)
lst.sort([](const std::string& str1, const std::string& str2)->bool
   {
       try {
           return std::stoi(str1) < std::stoi(str2);
       } catch (...) {
           return false;
       }
   });
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.388 секунд. Запросов: 23.