数字交互変換のプログラムをC++ ,JAVAの実装方法

キーボードから整数の値を入力すると、その値が漢数字で出力されるプログラム。また、結果を出力する際には、3桁ごとに「,」(コンマ)を出力すること。

JAVA:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        try{
            BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Input:");
            String line;
            while((line=reader.readLine())!=null){
                if(line.equals("")){
                    System.out.println("/n空白");
                }else{
                    String output=trans(line);
                System.out.println(output);
                System.out.println("Input:");
                }
            }
        }catch(Exception e){
            System.out.println("error");
            System.out.println("Input:");
        }

    }
    
    public static String trans(String in){
        String temp="";
        int keta=0;
        String oustring="";
        char chararray[]=in.toCharArray(); 
        String outst[]=new String[in.length()];
        
        HashMap<Integer,String> map=new HashMap<Integer,String>();
        int eg[] = { 0,1,2,3,4,5,6,7,8,9 };
        
        String cn[] = { "○","一","二","三","四","五","六","七","八","九" };
        for (int i = 0; i <eg.length; i++) {
            map.put(eg[i], cn[i]);
            
        }       
        for(int i=0;i<chararray.length;i++){
            outst[i]=map.get(Integer.parseInt(Character.toString(chararray[i])));
        }
        for(int i=outst.length-1;i>=0;i--){
            temp+=outst[i];
            keta++;
            if(keta%3==0&&keta!=outst.length)temp+=",";
        }
        for(int n=temp.length()-1;n>=0;n--){
            oustring+=temp.charAt(n);
        }
        return oustring;
    }

}

C++

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <sstream>
#include <iomanip>
#include <map>
std::string formatNumber(int num) ;

using namespace std;
int main()
{   
    map<string, string> nummap;
    
    string eg[] = { "0","1","2","3","4","5","6","7","8","9","," };
    string jp[] = { "○","一","二","三","四","五","六","七","八","九","," };
    
    for (int i = 0; i < size(eg); i++) {
        nummap[eg[i]] = jp[i];
    }

    cout << "INPUT:" << endl;
    for (int input; cin >> input;) {
        string inputs = formatNumber(input);
        string outputs;
        for (int i=0;i<size(inputs);i++)
        {
            string str(1, inputs[i]);
            outputs.insert(size(outputs), nummap[str]);
        }

        cout << outputs << endl;
        cout << "INPUT:" << endl;
    }
    return 0;
}

std::string formatNumber(int num)
{
    std::vector<int>    sepnum;
    int                 number = abs(num);
    int                 sgn = num >= 0 ? 1 : -1;

    while (number / 1000) {
        sepnum.push_back(number % 1000);
        number /= 1000;
    }

    std::stringstream  ss;
    ss << number * sgn;
    for (std::vector<int>::reverse_iterator i = sepnum.rbegin();
        i < sepnum.rend(); i++) {
        ss << "," << std::setfill('0') << std::setw(3) << *i;
    }
    return std::string(ss.str());
}

よりいい方法があるなら、教えていただければ助かります。