問題タブ [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::lambdaでboost::formatを使用する
boost::format
どういうわけか、で使用できませんboost::lambda
。これが私のコードの(うまくいけば)コンパイル可能な簡略化です:
- 最初
std::for_each
は期待される出力を生成します - 2つ目
std::for_each
は、数字のない空白のみを出力します
何故ですか ?私は本当によく知らないboost::lambda
ので、ここで明らかなことを見逃しているかもしれません。
ベースの答えを提案しないでくださいstd::copy
:私の実際のコードは機能しませんstd::vector
が、機能しますboost::fusion::vector
(std::for_each
実際にはboost::fusion::for_each
)。
c++ - boost::format() 出力演算子
coutのように、演算子を介してboost::format()を受け入れるクラスを作成する必要があります。
オペレータのパラメータはどのタイプでなければなりませんか? そのため、クラスは次のように宣言されます。
ありがとう。
c++ - boost::format %s 指定子を UTF-8 文字列で使用する
大規模なコード ベースを持つ既存のアプリケーションに UTF8 のサポートを追加します。このアプリケーションは を使用してboost::format()
おり、ASCII 以外の文字の出力が正しく配置されていません。具体的には、%{width}.{length}
s 指定子を使用する場合、boost::format()
文字をカウントしますが、これは utf8 文字列で「正しいことを行いません」。文字列の長さのコード (おそらく string::size()
) を使用するか、それに似たものに変更することは可能だと思いますutf8len()
... 何かに基づいて?
この場合、UCS2 (または UCS4、UTF-16 など) を使用するように既存のコード ベースを変更することは現実的ではありませんが、boost::format()
必要に応じて変更することは可能です。他の誰かがこの必要性に出くわし、可能な解決策を教えてくれることを願っていました.
注: utf8 でのロケールの使用に関する Web ページをいくつか見つけましたが、そのほとんどは、ストリームでの utf8 および UCS4 との間の変換により適しているように思われました。
c++ - 実際の位置文字列の書式設定?
(注: Boost.Format については知っています。次のことを行うためのより良い方法を探しています。)
最初のユースケースの例: 一部の国では、姓を最初に呼び名を最後に呼ぶことで人に名前を付けます。 、他の国では正反対です。
さて、私のコードでは、現在、次の方法で Boost.Format を使用してこれを解決しています。
さて、私はそれを次のようにしたいと思います。つまり、format
行内のすべて:
しかし、悲しいことに、素晴らしい解析例外が発生するため、それは機能しません。
実際の位置フォーマットを持つライブラリはありますか? または、私が知らない Boost.Format でこれを達成する方法さえありますか?
c++ - 事前に割り当てられたバッファーで Boost.Format を使用することは可能ですか?
Boost.Formatが、lib 自体によって管理される動的バッファーの代わりに、出力として固定幅/事前割り当てバッファーの使用をサポートするかどうか疑問に思っていましたか?
つまり、通常は次のようにします。
そのため、Boost:Format lib は自動的に十分なスペースを割り当て、「出力バッファー」を管理します。
Boost.Format で事前定義された非動的バッファを使用する方法があるかどうか疑問に思っていました。つまり、次のようなものです。
例、ドキュメント、ソースをふるいにかけるだけでよいことはわかっていますが、時間のatmが不足していることは別として。(そして、何かを見落としている可能性) を知ることは興味深いでしょう: それが不可能な場合、誰かがその理由を説明できれば (特定の理由がある/ある場合)、それは意図的なものでしたか? APIとよく合っていませんか?...?
免責事項: この質問はパフォーマンスに関するものではありません。
c++ - 期間を累積する方法
boost::format変数を使用して経過時間を秒単位で取得しています
しかし、私はタイマーを数回使用して期間を累積します。どのタイプの変数で期間を累積できるか知りたい(演算子+を使用)。たとえば、floatを使用すると、boost::formatからfloatに変換する方法がわかりません。
前もって感謝します
c++ - ブースト形式で CAtlStringW をどのように使用しますか?
私はこれを試しました:
フォーマットすると「hello 004B54D8」になってしまいましたが、「hello world」にしたいです。名前空間内で operator<< を定義するなど、いくつかのバリエーションを試しました。私は何が欠けていますか?operator<< は呼び出されないようです。
ありがとう。
ブースト形式のドキュメントには、カスタム型をフォーマットするための次の例が記載されています: http://www.boost.org/doc/libs/1_49_0/libs/format/example/sample_userType.cpp
c++ - boost::formatおよびstd::stringで%s形式指定子を使用する
%s
フォーマット指定子を使用するとstd::string
、このように未定義の動作が発生することを私は知っています。
std::string
しかし、同じ指定子とを使用することは節約できますboost::format
か?
%s
(const)char*
を指定しますが、私はを提供しstd::string
ます。これはUBにもつながる可能性がありますか?
c++ - boost::std コンテナーのフォーマットとカスタム印刷
私の名前空間には、ns
STL コンテナーを印刷するのに役立つ関数があります。例えば:
operator <<
これは、直接印刷するのに最適です。
ただし、使用boost::format
は不可能です。
問題はかなり明らかです。Boost は、カスタムを使用operator <<
して名前空間とは関係のない型を出力することを望んでいるとは考えていません。using
に宣言を追加する以外に、私の を探すboost/format/feed_args.hpp
便利な方法はありますか?boost::format
operator <<
visual-c++ - VC ++ 2012とBoostの非互換性-ライブラリヘッダーの`throw()`仕様
boost::formatを使用できない新しいプロジェクトがあります。ブーストによる仮想関数〜basic_altstringbufのオーバーライドに「throw()」がないことを訴えるコンパイラエラーが発生します。boost :: formatを使用する最も簡単な試みでさえ、それを行います。
私はそれがうまくいく他のプロジェクトを持っています。新しいプロジェクトがブーストとVC++インクルードに同じインクルードパスを使用していることを確認しました。すべてのプロジェクトで、[C++例外を有効にする]が[はい]に設定されています。私が思いつくことができる唯一の説明は、動作するプロジェクトには、std::include-filesのそれらの卑劣な例外仕様を無効にするいくつかの#DEFINEまたはいくつかの設定があるということです。しかし、それがどこにあるのか、私にはわかりません。何か案は?
エラー1エラーC2694:'boost :: io :: basic_altstringbuf ::〜basic_altstringbuf(void)':仮想関数のオーバーライドには、基本クラスの仮想メンバー関数よりも制限の少ない例外指定があります' std :: basic_streambuf <_Elem、_Traits> ::〜basic_streambuf (void)throw()
編集:当然の質問:VS ++ 2012に、std ::ヘッダーファイルが例外仕様なしでインクルードされる原因となるプロパティアイテムはありますか?-例外をオフにすることを除いて、それは?