問題タブ [fmt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
532 参照

c++ - fmt with Howard Hinnant's date: なぜ fmt::to_string の "{}" なのですか? fmtと日付のベストプラクティス?

TL;DR: fmtと Howard Hinnant の日付ライブラリ用のカスタム フォーマッタを実装しています。では、正常に動作しているときにreturnが返さdate::year_month_day d{};れるのはなぜですか? ゴッドボルトの例fmt::to_string(d)"{}"fmt::format("{}", d)"0000-00-00"


日付ライブラリを使用していて、iostreams からfmtに切り替えようとしています。YYYY-MM-DD 形式でフォーマットする必要があるdate::year_month_dayため、カスタム フォーマッタを作成しました (fmt::formatter のテンプレート特殊化date::year_month_day):

Godboltでは、2 つの動作例と 1 つの失敗例を含む完全な最小限の動作例を利用できます。

そのカスタム フォーマッタを使用するとfmt::format("{}", date::year_month_day{})、期待どおりに動作し、"0000-00-00". fmt::to_string(date::year_month_day{})同じ結果を返すはずですが、"{}"代わりに返されます。

を含む を使用してフォーマットdate::year_month_dayおよびその他のタイプを作成する最良の方法は何ですか? なぜ私はそれを得るのですか?datefmtfmt::to_string()"{}"

私はまだ C++20 の日付をサポートするコンパイラを使用できません: 私の知る限り、2020 年 6 月の時点で C++20 の std::chrono のカレンダーとタイムゾーンの部分の完全な実装はありません。

更新: カスタムの空の構造体にカスタム フォーマッタを使用しても問題なく動作し、format("{}", s)とで同じ結果が得られto_string(s)ます。上記の Godbolt リンクの例を参照してください。date::year_month_dayしたがって、どの壊れ方について特別な何かがあるに違いありませんfmt::to_string()

0 投票する
1 に答える
2222 参照

c++ - std::format を含めることはできません

std::format がいかに役立つかを見てきました。しかし、C ++ 20に含めようとするたびに機能しません。どうやらすでにライブラリに含まれているようですが、表示されず、オンラインの情報もありません。cppreference にもその例がありますが、オンライン コンパイラでさえ実行されません。そこからスニペットを添付しました。

GitHub からライブラリを非常に複雑にインポートせずに機能させる方法を知っている人はいますか。主に VisualStudio を扱っています。