1

通常、フォーマットにはストリームを使用しますが、この場合は?実行時までフォーマットがわかりません。

次のような書式文字列を取得できるようにしたいと考えています:
Hello {0}! 最後にログインしたのは {1,date:dd/mm/yy} です。
...変数 "Fire Lancer" と 1247859223 を入力すると、最終的に次のような書式設定された文字列になります:
Hello Fire Lancer! 前回のログインは 17/07/09 でした。

私が使用する他の言語では、この種のサポートが組み込まれています。たとえば、pythons フォーマット文字列メソッドですが、c++ ではそのような機能はないようです。あまり安全ではない C 印刷メソッドを受け入れます。

また、これは高性能プログラム用であるため、使用するソリューションは、毎回文字列を再解析するのではなく、フォーマット文字列を一度解析して保存する必要があります (たとえば、Format(string) メソッドで FormatString オブジェクトを返す Parse メソッドなど)。フォーマットメソッドが呼び出されます...

4

3 に答える 3

2

フォーマット文字列は、ICU MessageFormatで使用されているものと非常によく似ています。使用を検討しましたか?

于 2009-07-17T19:58:43.720 に答える
2

Boost Formatting はそれを行います。

http://www.boost.org/doc/libs/1_39_0/libs/format/doc/format.html

使用例については、この質問と回答をご覧ください。

于 2009-07-17T19:42:05.270 に答える
0

boost::formatは位置引数部分を行いますが、日付の書式設定は行いません...

于 2009-07-17T19:41:41.713 に答える