はじめに
ちょっと日本語文章からローマ字を生成したかったのでやってみました。
ちなみに ICU とは International Components for Unicode の略です(ICU - International Components for Unicode)。これを利用してみます。
参考サイト
ICUインストール
sudo aptitude install libicu-dev
ソースコード
#include <iostream> #include <boost/shared_ptr.hpp> #include <unicode/translit.h> std::string str2romaji(UnicodeString str) { // Transliteratorインスタンスを作成 UErrorCode error = U_ZERO_ERROR; boost::shared_ptr<Transliterator> t( Transliterator::createInstance("Latin-Katakana", UTRANS_REVERSE, error) ); // 変換 t->transliterate(str); // 変換結果取得 char* result = new char[str.length() + 1]; str.extract(0, str.length(), result, "utf8"); return result; } int main(int argc, char const* argv[]) { std::string result = str2romaji("カタカナ"); std::cout << result << std::endl; return 0; }
コンパイル
g++ test.cpp -licuio
結果
katakana
次回
MeCabとつなげて漢字/ひらがなが入っていてもローマ字に出来るようにしたい。