• ベストアンサー

C++で日付判定を行いたい!!

C++で日付判定を行いたい!! C++でデータを1バイトづつ呼んで(For文で回す)日付かどうかを判断したいのですが、VBのようなIsDateみたいな関数がないので、同じように扱える関数がC++であったら教えてください。 対応する関数が無い場合は参考になるようなサイトでもやり方でも結構ですので、教えてください。 例> tp=&buf[4*16+(16*3)]; //ポインタ for( ixs = 0;ixs<50;ixs++){  //日付判定チェックがしたい  sprintf(aaa,"%08d",*((unsigned int*)(tp+ixs))); } 宜しくお願いします。

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

  • ベストアンサー
回答No.3

汎用的に考えれば、以下の関数が使えるんじゃないかなーと - sscanf() - localtime() - mktime() 処理概要は、 sscanf() で 値を読み取って、struct tm に設定。 mktime()で time_t を取得してlocaltime() で struct tmを再度取得 sscanf()で読み取った値と逆引きした日付が一致するかチェック こんなかんじでしょうかね。 各関数のエラーチェックも忘れずに

r32yokoyok
質問者

お礼

回答ありがとうございます。 これで出来ました。 さっそく組み込んでみます。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「1バイトづつ呼んで日付かどうかを判断」って, どのような操作を意図しているのでしょうか?「日付」が 1バイトに収まるような環境がそれほど一般的であるとは思えないのですが. そして, そのあとの sprintf は何をしたいのでしょうか?

r32yokoyok
質問者

お礼

すみません。プログラムで1バイトで日付は私も判断出来ないと思います。 ですから"unsigned int"を定義していると思うのですが、如何でしょうか。 ありがとうございました。

回答No.1

【やり方】 (1)どういうデータなら日付なのかのイメージを明確にする (2)あるデータが特定のデータに該当するかを判定する方法を考える (3)(2)を日付に対してあてはめる (4)(3)から具体的な処理方法を考える (5)(4)をコードに落とす 一口に日付と言っても様々な表記方法があります。西暦何年とか平成何年とか年号から始まるものもあれば、「9/11」とだけのシンプルなものもあります。「いちがつついたち」と全部ひらがなとかもあり得ます。それらをすべて網羅して対応するのは現実的ではありません。 通常、特定用途で日付をチェックするなら、その用途に置いて現実的にあり得る表記方法に基づいてチェックを行うのが妥当です。それが複数ある場合もあるでしょうが、具体的な表記方法がイメージ出来れば、それをどうやってチェックしていけば良いのかということも分かってくると思います。

r32yokoyok
質問者

お礼

日付は西暦で取得する形です。このデータはバイナリなので、現実的ではないのは確かです。 ありがとうございました。