凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

ICU でカタカナ → ローマ字変換をしてみた

はじめに

ちょっと日本語文章からローマ字を生成したかったのでやってみました。
ちなみに ICU とは International Components for Unicode の略です(ICU - International Components for Unicode)。これを利用してみます。

環境

  • Ubuntu 10.04
  • Boost 1.48.0
  • gcc version 4.6.1 20110617 (prerelease) (GCC)

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とつなげて漢字/ひらがなが入っていてもローマ字に出来るようにしたい。