c++阿拉伯数字转中文字符

来源:互联网 发布:js中的事件委托 编辑:程序博客网 时间:2024/05/29 14:20
#include <stdio.h>#include <iostream>  #include <string>using namespace std;int getNum(){    int num;      cout << "请输入一个数字:" << endl;      // 从命令行输入这个浮点数      cin >> num;      // 清除输入流状态标志      cin.clear();      return num;  }string convertNum(int num){    static const string letter[] = {"零","一","二","三","四","五","六","七","八","九"};    static const string unit[] = {"","十","百","千","万","十","百","千","亿","十"};    string src;    string des;    char tmp[12];    sprintf(tmp, "%d", num);    src.append(tmp);        if ( num < 0 )    {        des.append("负");        src.erase(0, 1);    }        int len = src.length();    bool bPreZero = false;    for ( int i = 0; i < len; i++)    {        int digit = src.at(i) - '0';        int unit_index = len - i - 1;        if (i == 0 && digit == 1 && (unit_index == 1 || unit_index == 5 || unit_index == 9))        {            des.append(unit[unit_index]);        }        else if ( digit == 0 )        {            bPreZero = true;            if (unit_index ==  4 ||                unit_index ==  8)            {                des.append(unit[unit_index]);            }        }        else        {            if ( bPreZero )            {                des.append(letter[0]);            }            des.append(letter[digit]);            des.append(unit[unit_index]);            bPreZero = false;              }    }    return des;}int main( int argc, char *argv[] ){    printf( "Hello World!\n" );    char tmp[10];    sprintf(tmp, "%d", 1);        while ( 1)    {        int num = getNum();        printf("NUM:%10d ==>> %s\n", num, convertNum(num).c_str());    }    return 0;}


原创粉丝点击