問題タブ [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++ - std::transformでboost::lexical_castを使用する
g ++は好きではありません:
エラーメッセージは次のとおりです。
これは、変換する最後の引数としてlexical_castに問題があることを明確に示しています... lexical_castをラップする関数オブジェクトの記述を回避する方法はありますか?
ありがとう!
c++ - テンプレートでC++ブーストlexical_cast?
プログラム設定をstd::mapとして保存するクラスを作成しようとしています。すべてのプログラム設定は文字列として保存されるので、関連するタイプにキャストされたプログラム設定を返すことができるアクセサメソッドが欲しいです。私はC++でテンプレートを作成するのは初めてで、これが私の最初の試みです。
ただし、コンパイラエラーが発生します。
ブーストを使用すると、エラー出力が非常に長くなり、何が問題になっているのかよくわかりません。
c++ - char ポインターのテンプレートの特殊化?
boost::lexical_cast
は優れたツールですが、私のアプリケーションではstring -> bool
変換の制限に遭遇し、私を悩ませていました。、 、 、 、"0"
、 、"false"
などのすべての文字列"FALSE"
をに変換する必要があります。false
"1"
"true"
"TRUE"
true
boost::lexical_cast
との間の変換のみをサポート"0"
し"1"
ます。だから私の考えは、うまくいくように見える私自身の変換関数を書くことでした:
ここで、ラッパー ラウンドboost::lexical_cast
を作成し、独自のテンプレートの特殊化を作成したいと考えています。これが私がこれまでに得たものです:
これは整数または std::string に対してはうまく機能しますが、文字列リテラルまたは文字ポインターに対しては明らかに失敗します。
だから私は別の特殊化を書こうとしましchar *
たが、コンパイルに失敗しました!
std::string と の両方をサポートする正しい方法は何char *
ですか?
編集 1: タイトルはばかげていた。修正しました。
EDIT 2:ブースト自体からソリューションを借りました。新しい回答として投稿されました。
c++ - lexical_cast の代替(標準::文字列)
lexical_cast を使用するテンプレート化されたコードがあります。
ここで、すべての lexical_cast 呼び出しを削除したいと考えています (/clr ではうまく機能しないため)。
std::string とその値の間でオブジェクトをキャストする必要があります。
したがって、最初の方向は簡単です (T _from, std::string _to) :
しかし、文字列から任意の型に一般的にそれを行う方法を考えることができません (テンプレートで動作する汎用的なものが必要です。各型の特殊化を使用して、のような関数を使用することはできませんatoi
)
編集:
もちろん、反対方向に ostringstream を使用してみました。次のエラーが表示されます。
エラー C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &&,_Elem *)': 'std::basic_istream<_Elem, _Traits> &&' 'std::ostringstream' から
c++ - std :: istream抽出は、明白な理由なしにフェイルビットを設定します
文字列から値を設定するためにboost::lexical_castを使用できるプリミティブ型ラッパーを作成しています。正常に動作しますが、何らかの理由でstd::istream抽出演算子がフェイルビットを設定します。次のプログラムが出力します。
123.45
例外:ios_base::failbitセット
ただし、「inStream.exceptions(...」という行をコメントアウトすると、次のように機能して出力されます。
123.45
123.45
Unicodeでコンパイルするかどうか、またはintまたはfloatをValueTypeとして使用する場合は、どのような場合でもフェイルビットが設定されますが、違いはありません。
なぜstd::istreamは何かがうまくいかなかったと思うのでしょうか?
c++ - Boost.LexicalCast を機能させるにはどうすればよいですか?
boost::lexical_cast に問題があります。GLM (OpenGL Mathematics) ライブラリのクラスで使用しようとしています。
レキシカル キャストを可能にするために、問題のクラスに operator<< 関数を実装しました。
私は次のように演算子をテストしました:
と:
これは問題なく動作しますが、これを試してみると:
次のエラーが表示されます。
編集: Boost.PropertyTree のヘッダーが含まれている場合にのみエラーが発生するようです。
c++ - boost::lexical_cast から文字列への例外
私は boost::lexical_cast を使用するのが初めてで、その内部についてはほとんど理解していません。私は次のキャストをしようとしています:
ただし、ブーストは上記のコードが次のようであると不平を言っています。
[例外]: 不適切なレキシカル キャスト: ソース タイプの値をターゲットとして解釈できませんでした
ソースは文字列ですが、長さは常に 1 文字のみです。
誰か説明してくれませんか?
ありがとう。
c++ - 語彙キャストを後押し小切手
これは簡単なはずです。csvをトラバースし、コンマに基づいてトークン化し、トークンを使用して処理を行う関数があります。これらの1つは、intに変換することです。残念ながら、最初のトークンは必ずしもintであるとは限らないため、そうでない場合は「5」に設定したいと思います。
現在:
c++ - boost::lexical_cast と非組み込み型の文字列化
複合型 (私の場合はstd::vector
.
テンプレート化された文字列化関数の最初のバージョンは次のとおりです。
実際の例は次のとおりです。
出力を使用します
"-3-3-3-3-3-3-3-3"~
が、パフォーマンス上の理由から、boost::lexical_cast
今、私は関数の実装を変更しました:
このメソッドは組み込み型に対して機能しますが、前のようなケースでは機能しなくなります。std::vector
ベクトル用の特殊なテンプレートを作成する場合、問題は残ります (コンパイルされません)。
なにか提案を?
g++-4.5、ubuntu 11.10 amd64
c++ - boost::lexical_cast で使用するクラスを有効にする
lexical_castからのコード スニペット:
ドキュメントに基づいて、
1> arg を標準ライブラリの文字列ベースのストリームにストリーミングした結果を返し、次に Target オブジェクトとして出力します。
2> ソースは OutputStreamable です
3> ターゲットは InputStreamable です
質問 1 > ユーザー定義型 (UDT) の場合、OutputStreamable または InputStreamable は常に処理する必要がありstd::string
ますか? たとえば、メンバー変数として単純な整数を含むクラスが与えられた場合、 and を定義するoperator<<
とoperator>>
、実装コードはどのようになりますか? 整数を文字列として変換する必要がありますか? 私の理解に基づくと、UDTは実際の変換ジョブを処理std::string
するために常に処理する必要があり、中間体を必要boost::lexical_cast
とするようです。boost::lexcial_cast
std::string
質問2 >上記のコードのoperator<<
orの戻り値がそれぞれorを参照していないのはなぜですか?operator>>
std::ostream&
std::istream&