【一人 C++20 Advent Calendar 2019】新しいフォーマットライブラリ <format> が追加【19日目】

一人 C++20 Advent Calendar 2019 19日目の記事になります。

新しいフォーマットライブラリ が追加

printf のようなフォーマットを指定して文字列を生成するライブラリが新しく追加されます。
例えば std::format(書式, 引数...) のような形で呼び出し、関数の戻り値は std::string になります。
まだ実装しているコンパイラがなかったのでここを参照して動作イメージを書いてみます。
基本的には書式内の {} が引数の値に置き換わるような形で使用します。

// 必要なヘッダ
#include <format>


// {} で引数の値が展開される
std::string result = std::format("name: {}, age: {}", "homu", 14);
std::cout << result << std::endl;
// output: name: homu, age: 14

// {} 内に数値を書くとその番号の引数で置き換える
std::string result = std::format("age: {1}, name: {0}", "homu", 14);
std::cout << result << std::endl;
// output: age: 14, name: homu

他にも詳しく書式指定出来るので詳しくはこちらを参照して下さい。
またへんてこな書式を覚えるのかーってなるとめっちゃだるい…まあ慣れな気もしますが…。
とはいえ型安全らしいので便利といえば便利だと思います。
実際にライブラリが実装されてからいろいろと試してみたいところではありますねー。

参照