問題タブ [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++ - boost::bad_lexical_cast をキャッチするとき、キャストされる文字列/トークンにアクセスできますか?
トークンのシーケンスをキャストするときに をスローする可能性のあるコードを実行していますがboost:bad_lexical_cast
、実際にどのキャストが失敗したかを把握できるように、コードにアクセスして「トークンを脇に置く」ことはできません。
boost:bad_lexical_cast
どういうわけかキャストしようとした文字列にアクセスできますか? 型名に関するいくつかのフィールドを除いて、その定義には何も見つからないように見えましたが、何かが欠けている可能性があります。
c++ - lexical_cast strtof strtold は精度を失いますか?
ここ:
出力:
出力が 277499.84 でないのはなぜですか?
c++ - boost::lexical_cast を folly::fbstring で使用するにはどうすればよいですか?
次のプログラム:
次の出力が得られます。
これは、が のような型であるlexical_cast
ことを認識せず、単純に通常の変換を行っているためです。ただし、文字列の場合、最初の空白で停止し、入力全体が消費されていないことが検出され、例外がスローされます。fbstring
string
stream << in; stream >> out;
operator>>
lexical_cast
lexical_cast
について教える方法はありますかfbstring
(または、より一般的には、のようstring
なタイプ)?
c++ - boost::units::quantity を指定した boost::lexical_cast がコンパイルされなくなった
boost_program_options を介して得られた値を解析して boost::units の量を計算するコードに問題があります。以前は問題なく機能していましたが、新しいセットアップでは機能しなくなりました。不明瞭なエラー メッセージは、program_options で使用されているように見える boost::lexical_cast の問題を示唆しています。
最小限の例 (すべてのプログラム オプションを削除したもの) は次のとおりです。
これは私の古いセットアップ (gcc 4.7.2、ブースト 1.49) ではエラーなしでコンパイルされますが、ブースト 1.55 を使用した gcc 4.9.2 ではコンパイルされなくなりました (ちなみに、コンパイルしても例外がスローされるという事実は無視してください)。どちらの場合も、ストリームから実際に読み取られるものは何もないためです (解析ロジック全体を含めて、この投稿を難読化したくありませんでした)。代わりに、エラーメッセージが表示されます
レキシカル キャストで別のカスタム タイプ (boost::units::quantity ではない) を使用して >> 演算子をオーバーロードするか、文字列ストリームから数量を直接読み取ろうとすると、すべて正常に動作します。
誰かが私がここで間違っていることを教えてもらえますか?
c++ - lexical_cast を使用すると精度が失われる(ストリング)
boost::lexical_cast を使用する場合 (私は VS2013 でブースト バージョン 1.58 を使用しています)、文字列で指定された正確な値を取得できません。
r は 91.250000 (0x42b68000) ではなく 91.249992 (0x42B67FFF) です
ブーストの以前のバージョンは、期待どおりに動作しました。不足している精度設定はありますか?
c++ - lexical_cast で operator>> が一致する名前空間にある必要があるのはなぜですか?
テストケースは次のとおりです。
Boost は、一致するものがないと主張して、変換を拒否しoperator>>
ます。
(デモ)
operator>>
ただし、 namespace 内で宣言/定義すると、コードは宣伝どおりに機能しますN
。
なぜですか?それ以外の場合、ルックアップが失敗するのはなぜですか?