由一个小题看字符串转换

本文介绍了一个简单的C++程序,用于将两位数的整数转换为其对应的英文表述。通过定义几个辅助函数,如GetDigits和GetTens,程序能够正确处理10到99之间的数字。

写代码使得输入:45

输出:forty five

如下:该题主要用到字符串转换的一些知识。


#include<iostream>
#include<string>


using namespace std;
// Converts a number from 10 to 99 into text.


string GetDigits(string Digits)
{
string Result;
Result = "" ;


int test = atoi(Digits.c_str());
switch(test)
{
case 1: Result = "One";break;
case 2: Result = "Two";break;
case 3: Result = "Three";break;
case 4: Result = "Four"; break;
case 5: Result = "Five"; break;
case 6: Result = "Six" ; break;
case 7: Result = "Seven"; break;
case 8: Result = "Eight"; break;
case 9: Result = "Nine"; break;
}


   return Result;



string Right(string number)
{
string Result;
Result = "";

int i = number.length();
Result = number[i-1];
return Result;

}


string GetTens(string TensText)
{
    string Result;
    Result = "" ;         //Null out the temporary function value.


int test = atoi(TensText.c_str());


if( TensText[0] == '1' ) //If value between 10-19...
{


        switch(test)
{
            case 10: Result = "Ten";break;
            case 11: Result = "Eleven";break;
            case 12: Result = "Twelve";break;
            case 13: Result = "Thirteen";break;
            case 14: Result = "Fourteen";break;
            case 15: Result = "Fifteen";break;
            case 16: Result = "Sixteen";break;
            case 17: Result = "Seventeen";break;
            case 18: Result = "Eighteen";break;
            case 19: Result = "Nineteen";break;
            default: break;
}
}
    
    else    
{
// If value between 20-99...
char first = TensText[0];

test = int(first-'0');

//也可是 test = atoi(&first);

        switch(test)
{
            case 2: Result = "Twenty ";break;
            case 3: Result = "Thirty ";break;
            case 4: Result = "Forty ";break;
            case 5: Result = "Fifty ";break;
            case 6: Result = "Sixty ";break;
            case 7: Result = "Seventy ";break;
            case 8: Result = "Eighty ";break;
            case 9: Result = "Ninety ";break;
default:break;
}
  
   
}

string digits = GetDigits(Right(TensText));
Result = Result + digits;


return Result;
}



//对于位数的判断可以使用工厂模式
int main()
{
string t;
cin>>t;
if(t.length()>1)
cout<<GetTens(t).c_str();
else
cout<<GetDigits(t).c_str();


return 0;

}


使用到的函数

atoi : 从char*转到int

c_str: string的方法从string转到char *;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值