自己编写的一段程序,与大家 共享一下,如果转载请注明出处。同时欢迎指教。
- #include <iostream>
- #include <string>
- #include <sstream>
- int main(int argc, char * argv[])
- {
- std::string bits[]={"元","十","百","千","万","十","百","千","亿","十","百","千","兆","十","百","千"};
- std::string nums[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
- std::stringstream ss;
- int zero_status=0;
- unsigned long size=strlen(argv[1]);
- unsigned long counter=0;
- unsigned long sec=0;
- unsigned long cur_bit=0;
- int value=0;
- for(;counter<size;++counter)
- {
- cur_bit=size-counter-1;
- value=argv[1][counter]-'0';
- if(value==0)
- {
- if(zero_status)
- ++zero_status;
- else
- zero_status=1;
- if((zero_status==1)&&((cur_bit+1)>>2<<2==(cur_bit+1)))
- sec=-1;
- if(cur_bit-((cur_bit>>2)<<2)==0 && cur_bit>sec)
- sec=((cur_bit>>2)<<2);
- if(cur_bit==0)
- {
- ss<<bits[0];
- break;
- }
- continue;
- }
- else
- {
- if(zero_status>0)
- {
- if(sec>0&&sec!=-1)
- ss<<bits[sec];
- ss<<nums[0];
- }
- zero_status=0;
- sec=0;
- }
- ss<<nums[value]<<bits[size-counter-1];
- }
- std::cout<<ss.str()<<std::endl;
- return 0;
- }