Repolode
fmtlib

fmtlib/fmt

C stdioやiostreamsに代わる高速で型安全なC++フォーマットライブラリ。C++20のstd::formatを実装しています。

スター
25,887
フォーク
3,089
未解決の Issue
16
最終コミット
3 日前

これは何?

{fmt}は、C stdioやC++ iostreamsに代わる、より高速で安全なテキストフォーマットを目指すオープンソースのC++ライブラリです。Python風のフォーマット文字列構文を採用し、C++20のstd::formatとC++23のstd::printインターフェースを実装しているため、なじみのある書き方でコードを記述できます。

フォーマット文字列をコンパイル時に検査するため、文字列に無効な指定子を適用するといったミスをコンパイルエラーとして検出できます。また、printf互換API、chronoの日付と時刻、コンテナとrangeのフォーマット、色付きのターミナル出力、Dragonboxアルゴリズムに基づく浮動小数点数フォーマッターも備えています。独自の型に対するフォーマット機能も追加できます。

{fmt}は外部依存がなく、少数のヘッダを使う方法とヘッダーオンリーでビルドする方法を利用できます。MITライセンスで提供されており、ClickHouse、MongoDB、PyTorch、spdlogなどのプロジェクトで使われています。

主な機能

  • 01位置引数に対応したPython風のフォーマット文字列構文
  • 02C++20のstd::formatとC++23のstd::printを実装
  • 03フォーマット文字列のコンパイル時検査
  • 04Dragonboxアルゴリズムを用いた高速な浮動小数点数フォーマット
  • 05chrono、range、コンテナのフォーマットに対応
  • 06外部依存のないヘッダーオンリーモード

ユースケース

  • パフォーマンスが重視されるC++コードでprintfやiostreamsを置き換える
  • spdlogなどのライブラリでログメッセージを組み立てる
  • コンソール出力向けに日付、時刻、コンテナをフォーマットする
  • C++20またはそれ以前のコンパイラを対象とした移植性の高いC++コードを書く

トピック

よくある質問

fmt とは?
C stdioやiostreamsに代わる高速で型安全なC++フォーマットライブラリ。C++20のstd::formatを実装しています。 {fmt}は、C stdioやC++ iostreamsに代わる、より高速で安全なテキストフォーマットを目指すオープンソースのC++ライブラリです。Python風のフォーマット文字列構文を採用し、C++20のstd::formatとC++23のstd::printインターフェースを実装しているため、なじみのある書き方でコードを記述できます。
fmt は無料で使えますか?ライセンスは?
fmt は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
fmt は今もメンテナンスされていますか?
活発にメンテナンス中。fmt の最終コミットは 2026年10月18日 です。
fmt は何に使えますか?
パフォーマンスが重視されるC++コードでprintfやiostreamsを置き換える spdlogなどのライブラリでログメッセージを組み立てる コンソール出力向けに日付、時刻、コンテナをフォーマットする C++20またはそれ以前のコンパイラを対象とした移植性の高いC++コードを書く
fmt はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/fmtlib/fmt

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト