問題タブ [boost-format]
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++ - boost::format を直接 std::string に変換できないのはなぜですか?
次のことはできません。
メソッド str() を明示的に呼び出す必要があります。
それは単なるシンタックス シュガーですが、なぜ変換を追加しないのでしょうか?
c++ - シンボリック値としてboost::formatを使用してboolを印刷しますか?
boost::format
ブール値をシンボリック値として出力するにはどうすればよいですか?
これはなしで行うことができますboost::io::group
か?ストリームに事前に送信されたフラグは再テストされるようです。
出力
c++ - 科学表記法なしでC ++でn桁の有効数字をフォーマットする
浮動小数点値を有効桁数 n にフォーマットしたいのですが、科学表記法を使用しないでください (たとえそれが短くても)。
フォーマット仕様%f
は有効数字を扱っておらず、%g
科学的表記法を提供することがあります (これは私の使用には不適切です)。
フォームの値が必要です"123", "12.3", "1.23" or "0.000000123"
。
C++ または boostを使用してこれを行うエレガントな方法はありますか?
c++ - c++ boost format float - したくないことを指定する方法。および次のゼロ
boost::format
浮動小数点数を文字列に変換するために使用したいと思います。これらは期待される結果のいくつかの例です:
私は現在使用しています
ほとんどの場合は機能しますが、0
is "0.0"
and 1.00001
isの結果は、 andの代わり"1.0"
に必要な場合です。"0"
"1"
無意味なものを取り除くために何を変更する必要があり.0
ますか?
c++ - boost::format を使用した C++ の便利なログ ステートメント
次の特性を持つロギング機能を設計したいと考えています。
- char* ではなく std::string に基づく
- printf のように可変数の変数をサポート
- 最初のパラメーターとして重大度レベルを受け入れます
- 重大度レベルがロギング レベルを下回る場合のフォーマット オーバーヘッドを回避
- printf と同じか、それに近い単純さ
自動型変換のため、boost::format を使用する傾向があります。しかし、ここに私が見るいくつかの問題があります:
その構文は少しぎこちなくformat("Mgr %s on pid %d is in state %s" % mgr % pid % s)
、目には少し難しいです (変数のリストの性質は、コンマなしでは明らかではありません)。ログ呼び出しは次のようになります。
さらに悪いことに、mylog() を実装して、フォーマット オブジェクトが構築さ れる前に INFO メッセージをログに記録しているかどうかを確認することさえ可能ですか?
私が考えたもう1つのアプローチは、printfに近いように見えますが、
あるいは
実装は次のようになります。
これにより、必要になるまでフォーマットオブジェクトの構築が確実に延期されます。しかし、私が知る限り、可変引数リストをトラバースするときに、最後に到達したことを知る方法はありません!
誰かがこれを達成するための構文的に簡単なテクニックを提案できますか?
注: 私は g++ 4.4 を持っていますが、これは c++11 のすべてをサポートしているわけではありません (ただし、可変個引数テンプレートはサポートしています)。
c++ - C ++小数部の正確な数字を表示する方法
C++ (またはブースト ライブラリ) で小数部の特定の桁数を表示する方法はありますか? しかし、末尾の 0 を小数部に出力したくありません (例: 1.000
, 1.500
)。このケースを参照してください。
問題はsetprecision
、行 1 と行 2 を別々に印刷することです。ここで、両方の行を印刷0.714
し、1.714
. 3 行目と 4 行目1
と1.5
.
c++ - C++ 変数の有効期間 -- 一時的に返すには回避策が必要
を返す関数を持つC++ オブジェクト ( boost::format
) があります。str()
std::string
したがって、フォーマットされた C 文字列が必要な場合は、次のように記述する必要があります。
私はそれがかなり冗長だと思います、そして私はそれをたくさん必要としています。を持ち、次のように機能する派生クラスを作成することを考えましたoperator char*
(Ch = char または wchar_t):
しかしもちろん、 によって返される文字列はstr()
、関数が戻るときに割り当てが解除され、有効な C 文字列は返されません。
回避策はありますか?
回避策として、周囲の関数呼び出しが続く限り存在する文字列を作成する必要があります。
c++ - Boost.Format に相当する C++11
C++11 標準の Boost.Format のようなものはありますか? 私が持っていた他のすべてのニーズに対して、より優れた C++11 オプションで Boost を使用することを避けることができました。
さらに言えば、Boost.Format は Python の構文に匹敵するものではありませんformat()
。そのようなものはさらに良いでしょう。
c++ - boost::format と可変個のテンプレート引数
printf
完全転送を利用する (ロギングに使用される) のような関数があるとします。
(私はこれをコンパイルしませんでしたが、私の実際の機能はこのガイドラインに従います)
可変引数を boost::format 変数に「展開」するにはどうすればよいですf
か?