STL風の構文でJSONの解析、構築、操作、シリアライズができる、ヘッダーオンリーのC++11ライブラリ。
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 の数値は毎日更新されます。
関連プロジェクト
リバースエンジニアリングやバイナリ解析に使える、ファイル構造を解析するパターン言語を備えたクロスプラットフォームのhexエディタ。
バイナリデータを解析・展開せずに直接読み取れる、クロスプラットフォームのシリアライズライブラリです。
SQLを書かずにSQLiteデータベースファイルを作成、閲覧、編集、検索できる、無料のクロスプラットフォーム対応ビジュアルツールです。
完全な検証を行いながら、SIMD命令で毎秒数GBのJSONを解析するC++パーサー。
QtとMLTマルチメディアフレームワークで構築された、無料のオープンソース・クロスプラットフォーム動画編集ソフト。