- ベストアンサー
Editボックスから値を取り出す方法
先ほども質問させて頂いたものですが、 実はダイアログボックス上のEditボックスからデータを取ってくるときに、Editボックスのメンバ変数はCEdit型のものを使って、Editボックスからdouble型のデータを取り出したいのです。 どなたかよい方法をご存知の方がいらっしゃれば、教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
取り出しについてはhyde-laさんのおっしゃる方法で。 変換ですが、値のエラーチェックを必要とするのならstrtod()、必要としないならatof()で良いでしょう。 atof()は入力文字列に変換不能文字が含まれていてもそれを報告しません。 strtod()は変換不能文字のアドレスを報告します。 例えば "ABC"→結果=0.0、変換不能文字→'A' "0.B"→結果=0.0、変換不能文字→'B' "0.0"→結果=0.0、変換不能文字→'\0' 結果として上の2つは入力エラーだとわかります。 ユーザインターフェースはタイプミスなどのケアレスミスに対応する必要があります。 自前でエラーチェックしてatof()やatoi()、sscanf()などを使うよりstrtod()やstrtof()を使うほうが効率的です。
その他の回答 (4)
調べてみました。 atof以外にもstrtodというものがありますね。 atofはfloatを返して、strtodはdoubleを返すようです。 ただ、使い勝手が良さそうなのは、atofかな? MSDNで、「データ 変換」とキーワードを打つと 見つけることができますよ。 ではでは☆ 先ほどは失礼しました。私の勘違いでできないと書いてしまったようで・・・
- hyde-la
- ベストアンサー率28% (42/146)
GetWindowTextで文字列を得て変換するか、 DDXも使えないことはないですね。 ダイアログが同じなら、自前でDDX_Textを追加してください。 DDX_Text(pDX, IDC_EDIT_DOUBLE, m_dData); とか。 (これは、データの欲しいダイアログかビューの DoDataExchangeハンドラ内に書いてください) 別のダイアログの場合はCDataExchangeにデータが欲しい ダイアログのウィンドウハンドルを入れて・・・って トリックも使えます。
- jkz
- ベストアンサー率25% (20/79)
atof()はどう? CString str; double dNum; dNum = atof(str);
それって、変換するしかないのでは? 入ってくるデータが必ずDoubleなのであれば、 自分で作成して、変換するしかないでしょう。 MSDNにそれなりにヘルプが入っているので、 参考にしてみてください。 #変換というキーワードで出てくるはず。 #ただし、そのままの変換は無理ですよ。 どうしても面倒だというのであれば、画面周りは VBで作ってはどうでしょうか。 #こいつなら、Val関数で一発です。 ではでは☆
お礼
分かりやすく、適切な回答ありがとうございました。 あと、私の質問に答えてくださった他の皆様にも深く感謝いたします。 みなさんありがとうございました。