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) (since 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) (since 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) (since C++11)
string_type format( const char_type* fmt_s,
                    std::regex_constants::match_flag_type flags =
                        std::regex_constants::format_default ) const;
(4) (since 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)
параметры, специфичные для сопоставления
(typedef)

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

Spec-Zone.ru

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