以下ソースコードです。
#include
#include
#include
#include
using namespace std;
wstring ToKansuji(long number)
{
if (number == 0) {
return L"〇";
}
vector kl = { L"", L"十", L"百", L"千" };
vector tl = { L"", L"万", L"億", L"兆", L"京" };
vector nl = { L"", L"一", L"二", L"三", L"四", L"五", L"六", L"七", L"八", L"九" };
wstring str = L"";
int keta = 0;
while (number > 0) {
int k = keta % 4;
int n = static_cast(number % 10);
if (k == 0 && number % 1000 > 0) {
str = tl[keta / 4] + str;
}
if (k != 0 && n == 1) {
str = kl[k] + str;
}
else if(n != 0) {
str = nl[n] + kl[k] + str;
}
keta++;
number /= 10;
}
return str;
}
int main()
{
wcout.imbue(locale("japanese"));
wcout << ToKansuji(0) << endl; // → 〇
wcout << ToKansuji(100) << endl; // → 百
wcout << ToKansuji(1255) << endl; // → 千二百五十五
wcout << ToKansuji(10000) << endl; // → 一万
wcout << ToKansuji(999999) << endl; // → 九十九万九千九百九十九
return 0;
}
タイトルが間違っていましたので修正しました。