Добавить для std::string_view конструктор от итераторов

anton_lashkov
anton_lashkov

Например, можно будет упростить использование std::string_view и std::regex

    std::string_view x = "123.123.123.123";

    std::match_results<std::string_view::const_iterator> match;
    std::regex_search(x.begin(), x.end(), match, std::regex(R"(([0-9]{3})\.([0-9]{3})\.([0-9]{3})\.([0-9]{3}))"));

    // c++17
    std::string_view token1(&(*match[1].first), match[1].length());
    // or
    std::string_view token2(&(*match[2].first), std::distance(match[2].first, match[2].second));

    // motivation example
    //std::string_view token3(match[3].first, match[3].second);
-4
рейтинг
1 комментарий
Igor Baidiuk

Мне кажется, вы упускаете, что string_view должен инициализироваться непрерывным сегментом строки. Для итераторов же это граничный случай. Ranges имеют вроде как концепт Sequential, но тогда логично превратить подобрый рейндж в блок символов, и уже его паковать в std::string_view

Igor Baidiuk
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения