問題タブ [lexical-cast]
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++ - SFINAE を使用して、テンプレート化された関数の呼び出しが提供された型のために失敗するかどうかを判断する方法はありますか?
レキシカルキャストが可能な場合にのみ、テンプレートで指定された型にパラメーターをboost::lexical_cast
キャストするために使用するメソッドを提供するために使用しているテンプレート化されたクラスがあります。現在、可能かどうかを確認するために、問題のタイプに対して が定義されているstd::string
かどうかを確認しているだけです。operator>>
これは、私がやっていることを基本的に説明する不自然な例です:
これまでのところ、これは私のコードでは問題なく機能します。レキシカル キャストに失敗するすべての型は最初のバージョンになり、他のすべての型は 2 番目のバージョンになります。少なくとも、コードでこれを使用している型についてはそうです。私が心配しているのは、基本的に、ターゲットの型が InputStreamable である限り、lexical_cast が失敗しないという仮定を立てていることです。lexical_castのブースト ドキュメントenable-if
には、他のいくつかの要件が概説されています。おそらくこれもチェックする必要がありますが、複雑なものを作成してこれらの条件をまとめて使用するのではなくmpl::and_
、SFINAE を使用して直接テストする方法はありますか?指定された型に対してその呼び出しlexical_cast
が失敗し、失敗しない場合にのみ特殊化されたテンプレートと一致するかどうか?
関数または演算子の存在をテストする例を見たことがありますが、特定の型のテンプレート化された関数を呼び出すとエラーが発生するかどうかをテストすることはありません。
c++ - 名前空間でカスタム operator<< を使用して boost::lexical_cast を使用する
それぞれが std::vector の operator<< の特殊化を提供する 2 つの名前空間が与えられた場合、boost::lexical_cast を使用できますか? オペレーターの 1 つをグローバル名前空間に昇格させれば、コードが機能することはわかっていますが、他の場所であいまいなエラーが発生するだけです。boost::lexical_cast が正しい演算子を見つけられるようにするために使用できる「using」ディレクティブの巧妙な使用法はありますか?
編集:これまでのところ、私が思いついた最善の方法は、オペレーターを .cpp の std 名前空間にプルすることです。これは、.cpp が 1 つのバージョンのみを必要とする場合は機能しますが、.cpp が複数のバージョンを必要とする一般的なケースでは機能しません。
c++ - ベクトルへの文字列ストリーム
std::stringstream
からに書き込む最良の方法は何だろうと思っていvector<int>
ます。
の内容の例を次に示しstringstream
ます。
"31 #00 532 53 803 33 534 23 37"
これが私が持っているものです:
しかし、何が起こっているように見えるかというと、それは最初のものを読み取り、次に取得し#00
て戻ります0
。これは数値ではないためです。
理想的には、私が望むのは、 a に#
なり、次の空白まですべての文字をスキップすることです。これはフラグなどで可能ですか?
ありがとう。
c++ - boost::lexical_cast が警告付きでコンパイルされる
以下をコンパイルします。
これに帰着します:
なんで?この警告を回避するにはどうすればよいですか?
c++ - C ++ boost::lexical_castでクラスを使用する
Testクラスを。で使用したいboost::lexical_cast
。オーバーロードoperator<<
しoperator>>
ましたが、ランタイムエラーが発生します。
これが私のコードです:
出力:
ところで、私はVisual Studio 2010を使用していますが、Fedora16をg++で試したところ、同じ結果が得られました。
c++ - ランタイムライブラリなしのboost::lexical_cast
boost :: lexical_castを使用したいのですが、C / C ++ランタイムライブラリを使用できないため、lexical_castを使用できません。Boostについてはよくわかりませんが、次のようなブロックの使用を見てきました。
そして、Boostが前述のライブラリに依存しないように使用する#defineがあるのではないかと考えています。
Boostのドキュメントに、可能なプリプロセッサオプションを説明する特定の場所がある場合は、オンラインで見つけることができないように思われるので、それも非常に高く評価されます。
c++ - Identity Boost :: lexical_castを実行する際にどのようなオーバーヘッドがありますか?
次のような関数が与えられます:
渡されたタイプfunction1
がすでに?である場合、どのような種類のオーバーヘッドが発生しstd::string
ますか?
オーバーヘッドは、使用するタイプによって異なりますlexical_cast
か?
キャストをバイパスするためにオーバーロードされた関数を作成することは不要ですか?例えば:
lexical_cast
ブーストのバージョンは、リビジョン間でいくつかの最適化を受けていることを理解しているので、あなたの答えに関連している可能性があります。
boost - boost::lexical_cast に正符号を付ける
std::string に変換するときに、boost::lexical_cast に正符号を含めるにはどうすればよいですか?
私は次と同じことをするつもりです: snprintf( someArray, someSize, "My string which needs sign %+d", someDigit );
. ここで、someDigit は、正の場合は +someDigit として、負の場合は -someDigit として文字列に入れられます。参照: http://www.cplusplus.com/reference/clibrary/cstdio/snprintf/
c++ - boost::lexical_cast の使用(ストリング)
私は初心者であり、これが機能しない理由について説明が必要です。
myArray[9] はゼロではありませんが、結果の double は常にゼロです。どんな助けでも大歓迎です。ありがとうございました。
c++ - レキシカルキャストC ++
次のような行を実装するために、ラッパーのレキシカルキャスト関数をどのように書くことができますか?
私はプログラミングにまったく慣れていないので、関数をどのように記述できるか疑問に思っていました。テンプレートの作り方がわかりません。また、 double のラッパー関数も作成できますか? お気に入り
??