РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
624 of 815 menu

Функция vformat

Функция vformat форматирует данные и возвращает результат в виде строки. В отличие от функции format, которая принимает переменное число аргументов напрямую, функция vformat принимает объект va_list, содержащий список аргументов переменной длины. В первый параметр мы передаем строку формата, а во второй - объект va_list с аргументами для подстановки. Функция возвращает отформатированную строку типа std::string.

Функция vformat особенно полезна при написании собственных функций, которые принимают переменное число аргументов, так как позволяет передать этот список в функцию форматирования без потери информации о типах.

Синтаксис

std::string vformat(fmt::string_view format_str, fmt::format_args args)

Пример

Давайте отформатируем строку с помощью функции vformat, передав в неё строку формата "{} {}" и объект fmt::make_format_args с двумя аргументами:

#include <iostream> #include <fmt/format.h> using namespace std; int main() { string res = fmt::vformat("{} {}", fmt::make_format_args("abcde", 12345)); cout << res << endl; return 0; }

Результат выполнения кода:

"abcde 12345"

Пример

Давайте напишем собственную функцию, которая принимает переменное число аргументов и внутри использует функцию vformat для форматирования строки:

#include <iostream> #include <fmt/format.h> using namespace std; template <typename... Args> string my_format(string format_str, Args&&... args) { return fmt::vformat(format_str, fmt::make_format_args(args...)); } int main() { string res = my_format("{} + {} = {}", 1, 2, 3); cout << res << endl; return 0; }

Результат выполнения кода:

"1 + 2 = 3"

Смотрите также

  • функция format,
    которая форматирует строку с переменным числом аргументов
  • функция format_to,
    которая записывает результат форматирования в буфер
  • функция print,
    которая выводит отформатированную строку в поток
  • функция println,
    которая выводит отформатированную строку с переводом строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить