• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CStringの中から数字だけの場合と、その他が含まれる場合を識別する方法)

CStringの中から数字だけの場合と、その他が含まれる場合を識別する方法

このQ&Aのポイント
  • キーボードで入力された文字の中に数字以外の文字が含まれているかを識別する方法を知りたいです。
  • CString型からdouble型にキャストした後、数字だった場合は処理Aを実行し、それ以外の場合は処理Bを実行したいです。
  • 以下の条件を満たさない場合は識別を行いたくありません:(1) 数字とアルファベットなど数字以外の文字の混合 (2) 符号付の数字

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

  • ベストアンサー
  • yukika-37
  • ベストアンサー率39% (26/66)
回答No.1

CString moji;//キーボード入力された文字が入っています。 char *e; double mojiDO = strtod(moji, &e);//CString型 → double型に変換 if (*e == '\0') {//条件(1)チェック   if (mojiDO >= 0) {//条件(2)チェック     if (mojiDO <= 500) {       //処理A     } else if(....) {       //処理B     }   } } 最低限こんな感じで動くのでは? (2)については、他にも処理の仕方あると思いますけど…。 (先頭がハイフンだったら処理しない、とか)

参考URL:
http://www9.plala.or.jp/sgwr-t/lib/strtod.html
hagimoto
質問者

お礼

yukika-37さんありがとうございます。 期待する動作が得られました。 strtod()はatof()と違い文字列中に変換不可能な文字があった場合には、 その文字列のポインタを得られるのですね。    とても勉強になりました。

hagimoto
質問者

補足

条件に大文字の数字もNG と書き忘れてしまったのですが、大文字の数字についても、期待通りの結果が得られました。