問題タブ [fastformat]
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.
c++ - Is there a 'catch' with FastFormat?
I just read about the FastFormat C++ i/o formatting library, and it seems too good to be true: Faster even than printf, typesafe, and with what I consider a pleasing interface:
This looks almost too good to be true. Is there a catch? Have you had good, bad or indifferent experiences with it?
c++ - Windows FormatMessage の安全で柔軟なファサード
プロジェクトにFormatMessage()を使用する必要がありますが、その恐ろしいインターフェイスが好きではありません。置換パラメーターを許可しながら、それを整理するファサードを知っている人はいますか?
私は FastFormat の紹介 の 2 番目の部分を読み、 FormatMessage()の拡張機能を作成することを検討しています(または、FastFormatプロジェクト チームに拡張機能があるかどうかを尋ねます)。他にまともなものがあれば、代わりにそれをつかむでしょう。
私が欲しいのは、次のようなコードを記述できるようにすることです。
結果は次のようになります。
私が構築した現在のラッパーには、次のインターフェースがあります。
これには 2 つの問題があります。
int
,std::string
,void*
- ではない任意の型を簡単に渡すことができるため、型安全ではありません。const char*
- 引数の数と、エラーを表すフォーマット文字列に必要な数が一致しないのは簡単です。
型安全性の観点からFastFormatの機能を考えると、そのメカニズムに従ってFormatMessage()を処理する方法があるかどうかを知りたいです。
c++ - 無制限の引数を受け入れる関数で型の安全性を保証するにはどうすればよいですか?
FastFormatライブラリは次のように機能します。
また、「100%型安全性」も主張しています。boost::format
オーバーロードによってそれを達成するなど、他のライブラリがどのようにそれを達成するかを理解できoperator%
ます。これは、私のコードでもかなり頻繁に行うことです。
しかし、代わりにコンマを使用できれば、他のプログラマーにとってはそれほど驚くことではありません。テンプレート化された演算子のオーバーロードトリックなしで型の安全性を保証する方法を知りたいのですが。
余談ですが、「テンプレート化された演算子のオーバーロードのトリック」とは何か疑問に思っている場合は、次のようになります。boost :: formatの動作(ほとんど):
c++ - C ++フォーマットライブラリは通常、数値フォーマットのために* sprintfにフォールバックしますか?
「すべての」C++フォーマットライブラリが最終的に*sprintf
数値をフォーマットする関数にフォールバックするかどうか疑問に思っています。
私はこれを求めています:
- Visual C ++に付属しているiostreamsライブラリを見ると、ストリームに入力された数値は最終的にはでフォーマットされることがわかります
sprintf_s
。 - Boost.Formatは、私が知る限り、利用可能なiostreamライブラリを使用します。
- FastFormatは、最終的
vsprintf
に数値のフォーマットに使用します。
それで、 * sprintfを使用せず、フォーマット自体を行うiostreams実装はありますか?数値のフォーマットを*sprintfファミリーの関数に転送しない他のフォーマットライブラリはありますか?
次の形式で回答をいただければ幸いです。
- いいえ:実装XYはABCを使用して数値をフォーマットします
- はい:私が知っている他のすべての(たとえばiostreams)実装(X、Y、Z)も、数値フォーマットをstdioに転送します。
過度に投機的な回答は避けてください。
c++ - FastFormat を使用してカンマで数値をフォーマットするにはどうすればよいですか?
FastFormatライブラリを使用して、3 桁区切りのカンマを使用して数値をフォーマットするにはどうすればよいですか?
例えば、
c++ - OS X の FastFormat
FastFormat について少し読んだ後、OS X 10.8 を実行している Macbook Pro にダウンロードしてインストールすることにしました。FastFormat のビルドに成功し、パフォーマンス テストを実行しました。次に、それが機能するかどうかを確認するための小さなテストを作成しました。
g++-4.7 でコンパイルすると (そしてすべてのインクルード パスが正しいことを確認してから)、PlatformSTL から以下のようなコンパイル エラーが発生しました。
unix
これらのエラーを手動で定義して抑制しようとしましたPLATFORMSTL_OS_IS_UNIX
が、次のリンカー エラーが表示されます。
FastFormat は OS X でサポートされていますか? サポートされている場合、何が間違っていますか?