ICU4C C++和暦変換

IBMのICU4Cを使って和暦変換するプログラムを作ってみた。

例えば…
↓↓↓
1989年1月7日→昭和64年1月7日
1989年1月8日→平成 1年1月8日

#include <iostream>
#include "unicode/smpdtfmt.h"
#include "japancal.h"

using namespace std;

string wareki(int year,int manth,int day){
  Locale mylocale("ja");
  UErrorCode success=U_ZERO_ERROR;
  UnicodeString myString="Gy.M.d";
  JapaneseCalendar* jcal=new JapaneseCalendar(mylocale,success);

  SimpleDateFormat sdf(myString,success);
  sdf.adoptCalendar(jcal);

  //和暦変換: year-1988,manth-1,day 
  jcal->set(year-1988,manth-1,day);
  UDate date=jcal->getTime(success);

  myString.remove();
  UnicodeString ubody=sdf.format(date,myString);

  //EUC_jpへ変換
  char target[ubody.length()+1];
  ubody.extract(0, ubody.length(), target, "euc-jp");
  string t=target;
  return t;
}

int main(int argc,char* argv[]){
  cout << wareki(1989,1,7) <<endl;
  cout << wareki(1989,1,8) <<endl;
  return 0;
}