先ほども質問させて頂いたものですが、
実はダイアログボックス上のEditボックスからデータを取ってくるときに、Editボックスのメンバ変数はCEdit型のものを使って、Editボックスからdouble型のデータを取り出したいのです。
どなたかよい方法をご存知の方がいらっしゃれば、教えてください。

A 回答 (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()を使うほうが効率的です。
    • good
    • 0
この回答へのお礼

分かりやすく、適切な回答ありがとうございました。

あと、私の質問に答えてくださった他の皆様にも深く感謝いたします。
みなさんありがとうございました。

お礼日時:-0001/11/30 00:00

調べてみました。



atof以外にもstrtodというものがありますね。
atofはfloatを返して、strtodはdoubleを返すようです。
ただ、使い勝手が良さそうなのは、atofかな?

MSDNで、「データ 変換」とキーワードを打つと
見つけることができますよ。

ではでは☆

先ほどは失礼しました。私の勘違いでできないと書いてしまったようで・・・
    • good
    • 0

GetWindowTextで文字列を得て変換するか、


DDXも使えないことはないですね。
ダイアログが同じなら、自前でDDX_Textを追加してください。

DDX_Text(pDX, IDC_EDIT_DOUBLE, m_dData);

とか。
(これは、データの欲しいダイアログかビューの
DoDataExchangeハンドラ内に書いてください)

別のダイアログの場合はCDataExchangeにデータが欲しい
ダイアログのウィンドウハンドルを入れて・・・って
トリックも使えます。
    • good
    • 0

atof()はどう?




CString str;
double dNum;

dNum = atof(str);
    • good
    • 0

それって、変換するしかないのでは?



入ってくるデータが必ずDoubleなのであれば、
自分で作成して、変換するしかないでしょう。

MSDNにそれなりにヘルプが入っているので、
参考にしてみてください。
#変換というキーワードで出てくるはず。
#ただし、そのままの変換は無理ですよ。

どうしても面倒だというのであれば、画面周りは
VBで作ってはどうでしょうか。
#こいつなら、Val関数で一発です。

ではでは☆
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ