PAT1004

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int char_to_digit(char c){
    if(c=='0')
        return 0;
    else if(c=='1')
        return 1;
    else if(c=='2')
        return 2;
    else if(c=='3')
        return 3;
    else if(c=='4')
        return 4;
    else if(c=='5')
        return 5;
    else if(c=='6')
        return 6;
    else if(c=='7')
        return 7;
    else if(c=='8')
        return 8;
    else if(c=='9')
        return 9;
}

string char_to_english(char c){
    if(c=='0')
        return "zero";
    else if(c=='1')
        return "one";
    else if(c=='2')
        return "two";
    else if(c=='3')
        return "three";
    else if(c=='4')
        return "four";
    else if(c=='5')
        return "five";
    else if(c=='6')
        return "six";
    else if(c=='7')
        return "seven";
    else if(c=='8')
        return "eight";
    else if(c=='9')
        return "nine";
}

int main(){
    string input;
    cin>>input;
    int sum=0;
    for(int i=0;i!=input.size();++i){
        sum+=char_to_digit(input[i]);
    }
    stringstream ss;
    ss<<sum;
    string output;
    ss>>output;
    for(int i=0;i!=output.size();++i){
        cout<<char_to_english(output[i]);
        if((i+1)==output.size())
            break;
        cout<<" ";
    }
    
    return 0;
}

 

本题只是简单涉及一点点字符串和数字之间的转化,我是用stringstream来处理这种转变,个人感觉比较方便:

当使用stringstream时候要注意的是头文件是<sstream>不是<stringstream>,其次是如果进行多次转化,每一次转化结束后就要ss.clear()一次。

其他的感觉就没有什么问题。

 

posted on 2019-08-27 09:15  川川——叮叮咚咚  阅读(214)  评论(0编辑  收藏  举报