-PR-
解決済み

Editボックスから値を取り出す方法

  • 暇なときにでも
  • 質問No.17212
  • 閲覧数172
  • ありがとう数6
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 33% (4/12)

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

質問者が選んだベストアンサー

  • 回答No.5
レベル13

ベストアンサー率 37% (570/1525)

取り出しについては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()を使うほうが効率的です。
お礼コメント
ninja908

お礼率 33% (4/12)

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

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

その他の回答 (全4件)

  • 回答No.1

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

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

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

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

ではでは☆


  • 回答No.2
レベル9

ベストアンサー率 25% (20/79)

atof()はどう?


CString str;
double dNum;

dNum = atof(str);
  • 回答No.3
レベル10

ベストアンサー率 28% (42/146)

GetWindowTextで文字列を得て変換するか、
DDXも使えないことはないですね。
ダイアログが同じなら、自前でDDX_Textを追加してください。

DDX_Text(pDX, IDC_EDIT_DOUBLE, m_dData);

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

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

調べてみました。

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

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

ではでは☆

先ほどは失礼しました。私の勘違いでできないと書いてしまったようで・・・
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ