fmt

Современная библиотека форматирования строк для C++, предоставляющая безопасную, расширяемую и высокопроизводительную альтернативу функциям стандартной библиотеки вроде printf и iostreams. Библиотека реализует предложение C++20 std::format и обеспечивает обратную совместимость с более старыми стандартами C++.

Особенности

  • безопасность типов — ошибки форматирования обнаруживаются во время компиляции;
  • высокая производительность — быстрее printf и потоков C++ в большинстве сценариев;
  • поддержка C++11 и выше, включая полную реализацию C++20 std::format;
  • расширяемость для пользовательских типов;
  • поддержка локалей и интернационализации;
  • чистый и интуитивно понятный синтаксис.

Основные компоненты

fmt предоставляет богатый набор функций для форматирования строк, вывода и парсинга (подробнее с документацией можно ознакомиться здесь).

Базовое форматирование строк

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

Основные функции форматирования:

  • fmt::format() — форматирование строки с возвратом результата в виде строки;
  • fmt::format_to() — форматирование с записью результата в выходной итератор;
  • fmt::format_to_n() — форматирование с ограничением по количеству символов;
  • fmt::formatted_size() — вычисление размера отформатированной строки без создания самой строки;
  • fmt::print() — вывод форматированной строки в стандартный поток вывода.

Продвинутые возможности форматирования

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

Расширенные возможности:

  • позиционные аргументы: {0}, {1}, {2};
  • именованные аргументы: {name}, {value};
  • выравнивание и заполнение: {:>10}, {:<10}, {:^10};
  • форматирование чисел: {:d}, {:x}, {:f}, {:.2f};
  • локализованное форматирование: {:L};
  • поддержка даты и времени.

Безопасный вывод и ввод-вывод

Помимо форматирования, fmt предоставляет безопасные и эффективные альтернативы стандартным потокам C++. Эти функции обеспечивают лучшую производительность и безопасность типов.

Функции ввода-вывода:

  • fmt::print() и fmt::println() — безопасный вывод с поддержкой форматирования;
  • fmt::fprintf() — аналог fprintf с проверкой типов;
  • fmt::ostream — потоковый вывод с поддержкой форматирования;
  • fmt::scan() и fmt::scanf() — безопасный ввод с разбором форматированных строк.

Поддержка пользовательских типов

fmt позволяет легко добавлять поддержку форматирования для пользовательских типов с помощью специализации шаблона formatter. Это обеспечивает единообразный синтаксис форматирования для всех типов.

Способы расширения:

  • специализация fmt::formatter<T> с методами parse и format;
  • использование макроса FMT_FORMAT_AS для форматирования через существующий тип;
  • реализация функции format_as для простых случаев;
  • автоматическое форматирование структур с помощью рефлексии (экспериментально).

Локализация и интернационализация

fmt предоставляет встроенную поддержку локалей для форматирования чисел, дат и других локале-зависимых данных. Это позволяет легко создавать интернационализированные приложения.

Возможности локализации:

  • форматирование чисел с разделителями групп: {:,};
  • локализованные представления даты и времени;
  • поддержка пользовательских локалей через std::locale;
  • интеграция с системами перевода.

Интеграция с системой сборки

fmt легко интегрируется в различные системы сборки и может использоваться как header-only библиотека или как отдельная библиотека времени выполнения.

Варианты интеграции:

  • header-only режим (подключение fmt/core.h);
  • отдельная библиотека для уменьшения времени компиляции;
  • поддержка CMake, Bazel, Conan, vcpkg и других систем сборки;
  • совместимость с std::format из C++20.

Инструменты и утилиты

fmt включает вспомогательные инструменты для разработки и отладки форматирования.

Полезные утилиты:

  • fmt::join() — форматирование диапазонов с разделителем;
  • fmt::to_string() — преобразование значения в строку;
  • fmt::memory_buffer — эффективный буфер для инкрементального форматирования;
  • fmt::arg() — создание именованных аргументов;
  • fmt::styled() — форматирование с применением стилей.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "fmt/9.1.0@aurora",
    )    

Процесс локальной сборки описан в документации.

fmt

A modern formatting library.
Лицензия
MIT
Версия
Автор
Angelica Volkova <angelica.volkova@fruct.org>
Скачать
armv7
187.28 Kb
MD5: 695dec31694cb62e6e4d86f08559f1fe
Updated: 04.09.2025, 11:26:58
armv8
194.25 Kb
MD5: 2f0c125a2eab39ef533559fb377cf147
Updated: 04.09.2025, 11:26:49
x86_64
195.75 Kb
MD5: 429fd0b8bbc54d19ece3df2411a47eaf
Updated: 04.09.2025, 11:27:00
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.