0

時間を取得しようとするコードのスニペットを次に示します。

void GetDate(int &month,int &day,int &year){
  time_t SystemTime;

  struct tm *OSTime;
  OSTime=localtime(&SystemTime);

  month=OSTime->tm_mon;
  day=OSTime->tm_mday;
  year=OSTime->tm_year;

  month+=1;
  year+=1900;
}

次の場合:

month=OSTime->tm_mon;

それはスローします:

GonzalesP2.exe の 0x01101123 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000010。

GetDate を呼び出すメソッドは次のとおりです。

void Calendar::SetMonthYear(int mon,string sYr){
  string temp;

  GetDate(tMonth,tDay,tYear);
  if(mon==0 && sYr=="0000"){
    mon=tMonth;
    sYr=tYear;
  }

  month=mon;
  //get the year
  temp=sYear.at(2);
  temp+=sYear.at(3);
  year=atoi(temp.c_str());
  //get the century
  temp=sYear.at(0);
  temp+=sYear.at(1);
  cent=atoi(temp.c_str());
  FillMonthGrid();
}

助けてください。

4

1 に答える 1

1

もう 1 つの手順を忘れました。

  time (&SystemTime); //^^Should first do this
  struct tm *OSTime;
  OSTime=localtime(&SystemTime);

ここで使用例を見つけることができます: localtime、 call timebefore call localtime

于 2013-06-06T00:23:21.023 に答える