На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Удаление несимволов в начале строки
    Программа:
    ExpandedWrap disabled
      #include <stdio.h>
      #include <vector>
      #include <iostream>
      #include <string>
       
      using namespace std;
       
      int main()
      {
        vector<string> sv{"01.name1", "030-name2", "100 - name3", " 55 . name4", "name5"};
        for (auto&& s : sv)
        {
          for (int i = 0; i < s.length(); i++)
          {
            if (!isalpha(s[i]))
              continue;
            else
            {
              cout << s.substr(i, s.length()) << endl;
              break;
            }
          }
        }
        return 0;
      }
    работает. Но хотелось бы узнать, как на С++ решить эту задаче короче и эффективнее (с целью изучения С++).
      Цитата tumanovalex @
      как на С++ решить эту задаче короче и эффективнее (с целью изучения С++)

      Примерно вот так:

      ExpandedWrap disabled
        #include <algorithm>
        #include <iostream>
        #include <vector>
        #include <string>
        #include <regex>
         
        int main() {
          std::vector<std::string> sv{"01.name1", "030-name2", "100 - name3", " 55 . name4", "name5", "11.дигидроген монокислород"};
         
          std::regex rx("^[^A-Za-zА-яЁё]*(.*)$"); // для UTF-8
          
          // так:
          
          for (auto &s : sv) s = std::regex_replace(s, rx, "$1");
          
          // или так:
          
          std::transform(sv.cbegin(), sv.cend(), sv.begin(), [&](std::string s) {
             return std::regex_replace(s, rx, "$1");
          });
         
          for (auto &&s : sv) std::cout << s << std::endl;
          return 0;
        }

      Результат работы:

      ExpandedWrap disabled
        name1
        name2
        name3
        name4
        name5
        дигидроген монокислород

      Онлайн выполнение тут.
        Спасибо! Очень здорово. Опять регулярные выражения. Видимо, без них не обойтись. Нужно разбираться.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0226 ]   [ 16 queries used ]   [ Generated: 27.04.24, 06:20 GMT ]