#include "HiraganaConverter.hpp" string HiraganaConverter::convert(string str) { return convert( StringComparator::comparate(str) ); } string HiraganaConverter::convert(vector sList) { string convertedStr=""; // ローマ字に変換 for(int i=0;i<(int)sList.size(); i++) { // 最後の一文字でないとき if(i < ((int)sList.size()-1)) { // "っ"の処理 例)"っか" → "kka" if( sList[i] == "っ") { convertedStr += cellConvert(sList[i+1]).at(0); continue; } // "ゃ"、"ゅ"、"ょ"の処理   例) "じゃ" → "zya" else if(sList[i] == "ゃ"|| sList[i] == "ゅ"|| sList[i] == "ょ") { if(convertedStr.size() > 1) { convertedStr.erase( convertedStr.size() - 1, 1 ); } } } // その他(リストから変換) convertedStr += (sList[i].size() > 1) ? cellConvert(sList[i]) : sList[i]; } return convertedStr; } string HiraganaConverter::cellConvert(string str) { map::iterator it = dic.find(str); // 変換できない文字はそのまま返す return ( it != dic.end() ) ? it->second : str; } void HiraganaConverter::init() { dic.insert( map::value_type("あ","a") ); dic.insert( map::value_type("い","i") ); dic.insert( map::value_type("う","u") ); dic.insert( map::value_type("え","e") ); dic.insert( map::value_type("お","o") ); dic.insert( map::value_type("か","ka") ); dic.insert( map::value_type("き","ki") ); dic.insert( map::value_type("く","ku") ); dic.insert( map::value_type("け","ke") ); dic.insert( map::value_type("こ","ko") ); dic.insert( map::value_type("さ","sa") ); dic.insert( map::value_type("し","si") ); dic.insert( map::value_type("す","su") ); dic.insert( map::value_type("せ","se") ); dic.insert( map::value_type("そ","so") ); dic.insert( map::value_type("た","ta") ); dic.insert( map::value_type("ち","ti") ); dic.insert( map::value_type("つ","tu") ); dic.insert( map::value_type("て","te") ); dic.insert( map::value_type("と","to") ); dic.insert( map::value_type("な","na") ); dic.insert( map::value_type("に","ni") ); dic.insert( map::value_type("ぬ","nu") ); dic.insert( map::value_type("ね","ne") ); dic.insert( map::value_type("の","no") ); dic.insert( map::value_type("は","ha") ); dic.insert( map::value_type("ひ","hi") ); dic.insert( map::value_type("ふ","hu") ); dic.insert( map::value_type("へ","he") ); dic.insert( map::value_type("ほ","ho") ); dic.insert( map::value_type("ま","ma") ); dic.insert( map::value_type("み","mi") ); dic.insert( map::value_type("む","mu") ); dic.insert( map::value_type("め","me") ); dic.insert( map::value_type("も","mo") ); dic.insert( map::value_type("や","ya") ); dic.insert( map::value_type("ゆ","yu") ); dic.insert( map::value_type("よ","yo") ); dic.insert( map::value_type("ら","ra") ); dic.insert( map::value_type("り","ri") ); dic.insert( map::value_type("る","ru") ); dic.insert( map::value_type("れ","re") ); dic.insert( map::value_type("ろ","ro") ); dic.insert( map::value_type("わ","wa") ); dic.insert( map::value_type("を","wo") ); dic.insert( map::value_type("ん","n") ); dic.insert( map::value_type("が","ga") ); dic.insert( map::value_type("ぎ","gi") ); dic.insert( map::value_type("ぐ","gu") ); dic.insert( map::value_type("げ","ge") ); dic.insert( map::value_type("ご","go") ); dic.insert( map::value_type("ざ","za") ); dic.insert( map::value_type("じ","zi") ); dic.insert( map::value_type("ず","zu") ); dic.insert( map::value_type("ぜ","ze") ); dic.insert( map::value_type("ぞ","zo") ); dic.insert( map::value_type("だ","da") ); dic.insert( map::value_type("ぢ","di") ); dic.insert( map::value_type("づ","du") ); dic.insert( map::value_type("で","de") ); dic.insert( map::value_type("ど","do") ); dic.insert( map::value_type("ば","ba") ); dic.insert( map::value_type("び","bi") ); dic.insert( map::value_type("ぶ","bu") ); dic.insert( map::value_type("べ","be") ); dic.insert( map::value_type("ぼ","bo") ); dic.insert( map::value_type("ぱ","pa") ); dic.insert( map::value_type("ぴ","pi") ); dic.insert( map::value_type("ぷ","pu") ); dic.insert( map::value_type("ぺ","pe") ); dic.insert( map::value_type("ぽ","po") ); dic.insert( map::value_type("ぁ","xa") ); dic.insert( map::value_type("ぃ","xi") ); dic.insert( map::value_type("ぅ","xu") ); dic.insert( map::value_type("ぇ","xe") ); dic.insert( map::value_type("ぉ","xo") ); dic.insert( map::value_type("ゃ","ya") ); dic.insert( map::value_type("ゅ","yu") ); dic.insert( map::value_type("ょ","yo") ); dic.insert( map::value_type("っ","xtu") ); dic.insert( map::value_type("ー","-") ); }