問題タブ [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::lexical_cast を介して C++Builder AnsiString を std::string に変換する
学校の課題で、Borland C++ Builder を使用して C++ でプロジェクトを実装する必要があります。
VCL はすべての GUI コンポーネントに AnsiString を使用するため、表示するためにすべての std::strings を AnsiString に変換する必要があります。
もちろん機能しますが、書くのが少し面倒で、コードの重複は避けたいです。他のコンテキストで Boost を使用するため、Boost::lexical_cast を取得して AnsiString と連携するヘルパー関数を提供することにしました。これまでの私の実装は次のとおりです。
最初は Access Violation の後に Access Violation を取得しましたが、 .exceptions() のものを追加したので、画像がより明確になります。変換が実行されると、次の例外が発生します。
誰かがそれを修正する方法を知っていて、エラーが発生する理由を説明できますか? 私の C++ の経験は非常に限られています。
逆の変換ルーチンは次のようになります。
多分誰かがここでもエラーを見つけるでしょう:)
敬具!
編集:
現時点では、Jem の編集版を使用していますが、最初は機能します。プログラムをしばらく使用した後、Borland Codeguard は、既に解放された領域でのポインター演算について言及しています。これがどのように関連している可能性がありますか?
Codeguard ログ (私はドイツ語版を使用しており、翻訳には星印が付いています):
Ansistringkonverter.h は、投稿された演算子を含むファイルで、31 行目は次のとおりです。
ご協力いただきありがとうございます :)
c++ - boost::lexical_cast のパフォーマンスが非常に悪い
Windows XP SP3。コア 2 デュオ 2.0 GHz。boost::lexical_cast のパフォーマンスが非常に遅いことがわかりました。コードを高速化する方法を見つけたかった。Visual C++ 2008 で /O2 最適化を使用し、Java 1.6 および Python 2.6.2 と比較すると、次の結果が表示されます。
整数キャスト:
私が見ている時間は
c++: 6700 ミリ秒
Java: 1178 ミリ秒
Python: 6702 ミリ秒
c++ は Python と同じくらい遅く、Java よりも 6 倍遅いです。
ダブルキャスト:
私が見ている時間は
c++: 56129 ミリ秒
Java: 2852 ミリ秒
Python: 30780 ミリ秒
したがって、doubles の場合、c++ は実際には Python の半分の速度であり、Java ソリューションよりも 20 倍遅くなります。boost::lexical_cast のパフォーマンスを改善するためのアイデアはありますか? これは、stringstream の実装が不十分なことが原因でしょうか。それとも、boost ライブラリを使用すると、一般的にパフォーマンスが 10 倍低下すると予想できますか。
c++ - 列挙型をサポートするために字句キャストを拡張するにはどうすればよいですか?
文字列を数値データ型に変換する次の関数があります。
ただし、これは列挙型では機能しないため、次のようなことを行いました。
(私はtheStringが列挙型に対して有効な値を持っていると仮定しています。これは主に単純なシリアル化に使用しています)
これらの両方を組み合わせた単一の関数を作成する方法はありますか?
テンプレートの引数を少し試しましたが、何も思いつきませんでした。列挙型に対して1つの関数を呼び出し、他のすべてに対して別の関数を呼び出す必要がないのは良いことです。
ありがとうございました
c++ - 入力をチェックするためだけにブースト lexical_cast ライブラリを使用する方法
テキスト データを数値に解析するために、boost lexical_cast ライブラリを頻繁に使用します。ただし、いくつかの状況では、値が数値かどうかのみを確認する必要があります。私は実際には変換を必要としないか、使用しません。
そこで、文字列が double かどうかをテストする単純な関数を作成することを考えていました。
私の質問は、実際に値を使用したことがないため、ここで lexical_cast を削除する最適化コンパイラはありますか?
lexical_cast ライブラリを使用して入力チェックを実行するためのより良い手法はありますか?
c++ - boost::lexical_cast と std::transform を組み合わせる
コンパイルできない次のようなものを書きたいと思います。
しかし、これは機能していないので、これを行うファンクターを作成しました:
これを行う簡単な方法はありますか?
c++ - boost lexical_cast が例外をスローする
私は C++ 用のブースト ライブラリを使用していますが、関数 lexical_cast の動作が非常に奇妙です。lexical_cast("0.07513994") を実行すると正常に動作しますが、変換する必要がある変数を使用すると、bad_lexical_cast 例外がスローされます。コードは次のとおりです。
ここで何が間違っていますか?助けていただければ幸いです、ありがとう
c++ - lexical_cast int から文字列へ
boost::lexical_cast
に変換int
するときの例外を無視しても安全std::string
ですか?
c++ - lex_cast: フォーマットされたストリーム、フォーマットされていないストリームを作成します
ここSOで、以下のコードのこの素敵な小さなスニペットを見たことがあります。
これはboost::lexical_castを模倣しています。使用法:
ただし、フォーマットされたストリームのデフォルトのスキップにより、以下は期待どおりに機能しません。
(\n についても同様の問題が予想されます)。noskipws とテンプレートの特殊化を設定しようとしましたが、役に立ちませんでした。お知らせ下さい。
c++ - boost::lexical_castとstd::boolalphaを使用するにはどうすればよいですか?つまり、boost :: lexical_cast <bool>( "true")
私はboost::lexical_cast
、次のことが可能であると主張する他の質問に対するいくつかの答えを見てきました。
これは、g ++ 4.4.3Boost1.43では機能しません。std::boolalpha
(おそらく、デフォルトで設定されているプラットフォームで動作するのは事実です)
これはブール値の問題に対する文字列の優れた解決策ですが、boost::lexical_castが提供する入力検証が欠けています。
g++ - stringstream:「showpoint」が「fixed」と同じように動作するのはなぜですか?
に変換するlexical_cast
ときに小数点を保持する独自の記述を作成したいと思います。だから私はフラグを使用して設定しています:double
std::string
ostringstream
std::ios::showpoint
ただし、これは不要な0桁を出力します。これは、設定から期待する動作ですが、次のようにはなりstd::ios::fixed
ませんstd::ios::showpoint
。
設定せずstd::ios::showpoint
に
しかし、私はこのようなものが欲しいです:
簡単な方法はありますか?