0

次の 2 つの文字列 srt1 と str2 があります。

std::string str1 = "20110627120000";
std::string str2 = "20110629120000";

必要なのは、それらを時間形式に変換し、どちらが大きいかを比較することだけです。以下のコードを使用していますが、セグメンテーション違反が発生しています:

tm tm1,tm2;
sscanf(str1.c_str(),"%4d%2d%2d %2d%2d%2d",&tm1.tm_year,&tm1.tm_mon,&tm1.tm_mday,&tm1.tm_hour,&tm1.tm_min,&tm1.tm_sec);
sscanf(str2.c_str(),"%4d%2d%2d %2d%2d%2d",&tm2.tm_year,&tm2.tm_mon,&tm2.tm_mday,&tm2.tm_hour,&tm2.tm_min,&tm2.tm_sec);
std::cout << "5 \n";
if ((tm1.tm_year   <   tm2.tm_year) && (tm1.tm_mon<tm2.tm_mon) && (tm1.tm_mday<tm2.tm_mday ))
{
std::cout << str2 <<"is greater \n";
}
4

2 に答える 2

0

指定した形式の日付は、簡単に整数に変換して比較できます。下記参照:

#include <iostream>

int main()
{
    unsigned long long date_a = std::stoull("20110627120000");
    unsigned long long date_b = std::stoull("20110629120000");
    std::cout << std::max(date_a, date_b) << std::endl;
    return 0;
}
于 2013-09-06T20:06:50.787 に答える