C++でもi18nizer作ってみた.
文字列の区切りに正規表現を使えなかったので,ちょっと仕様が変わりました.
#include <string> #include <iostream> #include <sstream> std::string i18nizer(const std::string& str){ std::ostringstream oss; bool isPeriod=false; int length=str.length(); if(str[length-1]=='.'){ isPeriod=true; length--; } if(length < 3) return str; oss << str[0] << str.substr(1,length-2).length() << str[length-1]; if(isPeriod) oss << "."; return oss.str(); } int main(int argc,char *argv[]){ std::string line,token; while(std::getline(std::cin,line)){ std::istringstream iss(line); while(!iss.eof()){ iss >> token; std::cout << i18nizer(token) << " "; } std::cout << std::endl; } return 0; }