アプリ版:「スタンプのみでお礼する」機能のリリースについて

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)));
}

宜しくお願いします。

A 回答 (3件)

汎用的に考えれば、以下の関数が使えるんじゃないかなーと


- sscanf()
- localtime()
- mktime()

処理概要は、
sscanf() で 値を読み取って、struct tm に設定。
mktime()で time_t を取得してlocaltime() で struct tmを再度取得
sscanf()で読み取った値と逆引きした日付が一致するかチェック

こんなかんじでしょうかね。
各関数のエラーチェックも忘れずに
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/02 15:39

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


そして, そのあとの sprintf は何をしたいのでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/06/15 13:54

【やり方】


(1)どういうデータなら日付なのかのイメージを明確にする
(2)あるデータが特定のデータに該当するかを判定する方法を考える
(3)(2)を日付に対してあてはめる
(4)(3)から具体的な処理方法を考える
(5)(4)をコードに落とす

一口に日付と言っても様々な表記方法があります。西暦何年とか平成何年とか年号から始まるものもあれば、「9/11」とだけのシンプルなものもあります。「いちがつついたち」と全部ひらがなとかもあり得ます。それらをすべて網羅して対応するのは現実的ではありません。
通常、特定用途で日付をチェックするなら、その用途に置いて現実的にあり得る表記方法に基づいてチェックを行うのが妥当です。それが複数ある場合もあるでしょうが、具体的な表記方法がイメージ出来れば、それをどうやってチェックしていけば良いのかということも分かってくると思います。
    • good
    • 1
この回答へのお礼

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

お礼日時:2010/06/15 13:49

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