ICU4C C++ ローマ字→カタカナ、ひらがな変換

IBMのICU4Cを使って
ローマ字→カタカナ
ローマ字→ひらがな
ひらがな→カタカナ
カタカナ→ひらがな
全角→半角
半角→全角
変換するプログラムを作ってみた。

例えば…
↓↓↓
aiueo → アイウエオ
aiueo → あいうえお
ひらがな → ヒラガナ
カタカナ → かたかな
ハンカク → ハンカク
zenkaku → zenkaku

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "unicode/translit.h"

using namespace std;

//変換関数
char* latin2katakana(UnicodeString text);
char* latin2hiragana(UnicodeString text);
char* hiragana2katakana(UnicodeString text);
char* katakana2hiragana(UnicodeString text);
char* full2half(UnicodeString text);
char* half2full(UnicodeString text);


int main(){
  UnicodeString text="aiueo";
  cout << latin2katakana(text) <<endl;
  cout << latin2hiragana(text) <<endl;
  cout << hiragana2katakana("ひらがな") <<endl;
  cout << katakana2hiragana("カタカナ") <<endl;
  cout << full2half("カタカナ") <<endl;
  cout << half2full("ABCD") <<endl;
  return 0;
}

//ローマ字→カタカナ変換関数
char* latin2katakana(UnicodeString text){
  UErrorCode status = U_ZERO_ERROR;
  Transliterator *myTrans = myTrans->createInstance("Latin-Katakana",UTRANS_FORWARD,status);
  myTrans->transliterate(text);
  char* change=new char[text.length()+1];
  text.extract(0,text.length(),change,"euc-jp");
  return change;
}

//ローマ字→ひらがな変換関数
char* latin2hiragana(UnicodeString text){
  UErrorCode status = U_ZERO_ERROR;
  Transliterator *myTrans = myTrans->createInstance("Latin-Hiragana",UTRANS_FORWARD,status);
  myTrans->transliterate(text);
  char* change=new char[text.length()+1];
  text.extract(0,text.length(),change,"euc-jp");
  return change;
}

//ひらがな→カタカナ変換関数
char* hiragana2katakana(UnicodeString text){
  UErrorCode status = U_ZERO_ERROR;
  Transliterator *myTrans = myTrans->createInstance("Hiragana-Katakana",UTRANS_FORWARD,status);
  myTrans->transliterate(text);
  char* change=new char[text.length()+1];
  text.extract(0,text.length(),change,"euc-jp");
  return change;
}

//カタカナ→ひらがな変換関数
char* katakana2hiragana(UnicodeString text){
  UErrorCode status = U_ZERO_ERROR;
  Transliterator *myTrans = myTrans->createInstance("Katakana-Hiragana",UTRANS_FORWARD,status);
  myTrans->transliterate(text);
  char* change=new char[text.length()+1];
  text.extract(0,text.length(),change,"euc-jp");
  return change;
}

//全角→半角変換関数
char* full2half(UnicodeString text){
  UErrorCode status = U_ZERO_ERROR;
  Transliterator *myTrans = myTrans->createInstance("Fullwidth-Halfwidth",UTRANS_FORWARD,status);
  myTrans->transliterate(text);
  char* change=new char[text.length()+1];
  text.extract(0,text.length(),change,"euc-jp");
  return change;
}

//半角→全角変換関数
char* half2full(UnicodeString text){
  UErrorCode status = U_ZERO_ERROR;
  Transliterator *myTrans = myTrans->createInstance("Halfwidth-Fullwidth",UTRANS_FORWARD,status);
  myTrans->transliterate(text);
  char* change=new char[text.length()+1];
  text.extract(0,text.length(),change,"euc-jp");
  return change;
}