Spec-Zone.ru › C++

std::match_results<BidirIt,Alloc>::format

template< class OutputIt >
OutputIt format( OutputIt out,
                 const char_type* fmt_first, const char_type* fmt_last,
                 std::regex_constants::match_flag_type flags =
                     std::regex_constants::format_default ) const;
(1) (начиная с C++11)
template< class OutputIt, class ST, class SA >
OutputIt format( OutputIt out,
                 const basic_string<char_type,ST,SA>& fmt,
                 std::regex_constants::match_flag_type flags =
                     std::regex_constants::format_default ) const;
(2) (начиная с C++11)
template< class ST, class SA >
std::basic_string<char_type,ST,SA> 
    format( const std::basic_string<char_type,ST,SA>& fmt,
            std::regex_constants::match_flag_type flags =
                std::regex_constants::format_default ) const;
(3) (начиная с C++11)
string_type format( const char_type* fmt_s,
                    std::regex_constants::match_flag_type flags =
                        std::regex_constants::format_default ) const;
(4) (начиная с C++11)

format выводит строку формата, заменяя в ней спецификаторы формата или escape-последовательности данными совпадения из *this.

1) Последовательность символов формата задаётся диапазоном [fmt_first, fmt_last). Полученная последовательность символов копируется в out.
2) Последовательность символов формата задаётся символами в fmt. Полученная последовательность символов копируется в out.
3,4) Последовательность символов формата задаётся символами в fmt и fmt_s соответственно. Полученная последовательность символов копируется в вновь созданный std::basic_string, который возвращается.

Битовая маска flags определяет, какие спецификаторы формата и escape-последовательности распознаются.

Поведение format не определено, если ready() != true.

Параметры

fmt_begin, fmt_end - указатели на диапазон символов, задающий последовательность символов формата
fmt - std::basic_string, задающий последовательность символов формата
fmt_s - указатель на завершающуюся нулём строку символов, задающую последовательность символов формата
out - итератор, в который копируется полученная последовательность символов
flags - битовая маска std::regex_constants::match_flag_type, указывающая, какие спецификаторы формата и escape-последовательности распознаются
Требования к типам
-OutputIt должен удовлетворять требованиям LegacyOutputIterator.

Возвращаемое значение

1,2) out
3,4) Вновь созданная строка, содержащая полученную последовательность символов.

Исключения

Могут возникать исключения, определяемые реализацией.

Пример

#include <iostream>
#include <regex>
#include <string>

int main()
{
    std::string s = "for a good time, call 867-5309";
    std::regex phone_regex("\\d{3}-\\d{4}");
    std::smatch phone_match;

    if (std::regex_search(s, phone_match, phone_regex))
    {
        std::string fmt_s = phone_match.format(
            "$`"   // $` means characters before the match
            "[$&]" // $& means the matched characters
            "$'"); // $' means characters following the match
        std::cout << fmt_s << '\n';
    }   
}

Вывод:

for a good time, call [867-5309]

См. также

regex_replace
(C++11)
заменяет вхождения регулярного выражения текстом замены, сформированным по формату
(шаблон функции)
match_flag_type
(C++11)
параметры, относящиеся к сопоставлению
(псевдоним типа)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/regex/match_results/format

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API