• 締切済み

CString 数値チェック

C言語初心者です。 CStringの変数に入っている値が数値か判断するにはどうすればいいのでしょうか? 1文字ずつ判断するしかないの?

みんなの回答

回答No.2

CStringは文字列ですから数値は入っていません。 入っているとすればそれは'数字'です。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

あなたの言う「数値」がどのような範囲のものを許容しているのかわからないので、 基本的には自前で判断するしかないでしょう。

関連するQ&A

  • 【VC++6.0(MFC)】CString型の変数から数字部分を取り出すには?

    いつも大変お世話になっています。 VC初心者です。 現在、VC++6.0(MFC)でコーディングしております。 早速ですが、有識者の方がいらっしゃいましたら ご教授頂きたくお願いします。 ===質問=== CString型変数に以下のような数値を含む文字列から 数値部分だけを取り出すにはどうやってソースを 組めば宜しいでしょうか? ===例01=== CString cs1 = "2009年7月29日"; この文字列から "2009","7","29"を取得したい ===例02=== CString cs2 = "AM10:00:00 -0.4℃"; この文字列から "10","0","0","-0.4"を取得したい 以上、よろしくお願いします。

  • 数値チェックについて

    PHP初心者です。 PHPには変数の型が弱いこともあって困っています。 たとえば変数 $value => xxxx(何が入っているかわからない) $i => 1 の時 while($i < $value){ echo("こんにちは"); $i++; } という処理を行いたいと考えています。 ここで問題なのが$valueに格納されている値です。 10とか9999とかなら問題はありませんが"山田太郎"なんて ものが入っていたら大変です。(怖くて確かめられません・・・) そこで$valueが数値かどうかチェックする方法なんてありますか?

    • ベストアンサー
    • PHP
  • CString型からdouble型への変換

    C++は初心者です。VC4.0を使っていますがMFCなどは使っていません。 CString型の変数をint型やlong型への変換はなんとかできたのですが、double型へ変換することができずに困っています。atofを使えばいいのだと思い下記のように記述したのですが、コンパイルするとエラーがでます。   CString sample = "0.234";   double i;   i = atof((const char*)sample); error C2440: 'type cast' : cannot convert from 'class CString' to 'const char *' どう直せば無事にdouble i に0.234を格納できるのでしょうか?よろしくお願いします。

  • CStringについて

    よろしくお願い致します。 CString型の文字の最後の1文字を’¥0’に変更するにはどうすれば良いのでしょうか? CStringのことが良く分かっていないので、質問の仕方が変かも知れませんがお教えください。 今は仕方なしに、こんな感じでやってます。 CString m_InputData; char moji[100]; int n; strcpy(moji,m_InputData); n=strlen(moji); moji[n-1]='\0' m_InputData=moji;

  • CString型の文字列連結について

    質問させて頂きます。 開発環境はVC++.netです。 CString型の文字列連結について教えて頂きたく。 CString Test[_MAX_FNAME+1]; という変数にがあるとします。 Test変数のデータは Test[0]には"2" Test[1]には"1" が格納されてるとします。 Test変数のデータをCString Text1という変数に 以下のようなソースで文字列連結処理を行ったのですが、だめでした。 何がいけないのでしょうか? for(int i = 0; i <= 2; i++) { Text1 += Test[i]; } 実行結果は Text1には"2"が格納されたままでした。 実際はText1には、"2""1"となってほしい。 分かりにくい説明とは思いますが、 回答、ヒントなどを頂けますでしょうか 宜しくお願い致します。 それと、もしよかったら、Text1の格納データは "2","1"としたいので、カンマ区切りのやりかたなども ヒントを頂けたら幸いです。 以上です。 宜しくお願い致します。

  • キャストについて str = (CString*)("999") ;

    環境 WIN98 VC++6.0 MFC にて いつもお世話になります。 先日質問したばかり(QNo.682705)なのですが、やはり納得できないことがあるのでお願いします。 分かっている人からみれば、おかしな疑問と思われるかも知れませんが、私にとっては素朴に疑問が生じてしまいます。 *************************** 以下2つのコードのうち、<A>は文法的にOKで<B>がNGな理由が知りたいです。 <A> CString* str ; str = (CString*)m_array.GetAt(i) ; //OK <B> CString* str ; str = (CString*)("999") ; //NG <A>は、m_arrayの要素にCString*を入れていて、初めて成り立つ式です。 と教わりましたが、むしろ私にはCString*以外が入っているため、CString*のキャストしていると思える。 CString*が入っているのなら、キャストする必要は無いのではないでしょうか? ネット上で見つけたコードなため、実際の値やm_arrayの宣言がどうなっているかは確認出来ません。 そして、<A>がおかしなコードでは無いという大前提にたつと、<A>は別の表現をすると <A> str = (CString*)(CString*以外のポインタ) ; となります。 そうすると<B>のコードも、"999"は999の文字列が入っているアドレスを指すポインタであるという考えが正しいとすると、 <B> str = (CString*)(999をさすポインタ) ; となり、おかしなコードではないと思えるのですが、考え方のどこがおかしいのでしょうか? ************************** 以下のことを教わった上であえて聞いています。 str = (CString*)("999"); は、リテラル文字列をつっこもうとしています。 リテラル文字列とCStringはまったく別物です。

  • MFCのCStringについて

    MFCで、CStringをメンバとして含むクラスと、このクラスのオブジェクトを動的に生成して値を代入し、生成したオブジェクトへのポインタを返す関数を以下のように定義しました。 class Record { public:  long Id;  CString Str; }; Record* CreateRecord(long Id_in, CString Str_in) {  Record* ret;  if ((ret = (Record*)malloc(sizeof(Record))) == NULL) {   return NULL;  }  ret->Id = Id_in; // (1)  ret->Str = Str_in; // (2)  return ret; } この関数のコンパイルはうまくいきますが、関数実行時にメモリ参照エラーとなります。 調べてみると、(1)のlong型変数への代入はうまくいっているのですが、(2)のCString型変数への代入がうまくいっていないようです。 既にインスタンス化されているRecord型オブジェクトへのポインタを受け取り、それに代入するという関数であればうまく動きました。 (例) void SetRecord(Record* received, long Id_in, CString Str_in) {  received->Id = Id_in;  received->Str = Str_in; } 先に示したCreateRecord関数は、どこが良くないのでしょうか。

  • Oracle8での数値チェック

    現在、Oracle8.1.7で開発しております。 検索する条件として、『数値かどうか』または『文字列かどうか』 という判断を行いたいのですが可能でしょうか? やりたい事は、以下のデータの右から2桁目が数値となっているものと 文字列になっているものとを区別したいのです。  ○○○○-A01  ○○○○-C99  ○○○○-AB1  ○○○○-Z21     : 設計上、すべてのフィールドは『VARCHAR2』となっています。 よろしくお願いしますm(_ _)m

  • NUMERICチェック

    こんにちは 現在、CArrayをTYPE CStringで要素を格納しています。 この、格納された要素が、数値(たとえば、1000)であったら、それをnumericと判断するのはどうしたらよいでしょうか?? CStringで格納されているものをnumericかどうか判断するのは無理なのでしょうか??

  • CStringについて

    CStringにおいてFindではエラーが出ないのに、ReverseFindだとエラーがでます。 error C2664: 'ReverseFind' : 1 番目の引数を 'char [4]' から 'char' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 キャストするとエラーは出ませんが文字列の検索は失敗してしまいます。 Findはまったく問題無いのにどうしてこのようなことが起きるのでしょう? どう対処すれば良いか教えてください。 CString ddd; ・ ・ nn=ddd.Find("DOW");     ←エラーなし nn=ddd.ReverseFind("DOW"); ←エラーあり 環境はWIN98 VC++6.0 MFCです。