#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()一次。
其他的感觉就没有什么问题。
原文:https://www.cnblogs.com/chuan-chuan/p/11416247.html