#include <iostream>
#include <string>
using namespace std;
char* ss[9] = {"yi", "er","san","si", "wu", "liu", "qi", "ba", "jiu"};
int fun(string str)
{
char *buffer = new char[str.length()];
basic_string<char>::size_type n;
n = str._Copy_s(buffer, str.length(), str.length());
buffer[n] = '\0';
int i = 0;
int sum = 0;
int d,j;
while (buffer[i] != '\0')
{
if (buffer[i] == 'y' || buffer[i] == 'e' || buffer[i] == 'w' || buffer[i] == 'q' || buffer[i] == 'b')
d = 2;
else if (buffer[i] == 'l' || buffer[i] == 'j')
d = 3;
else if (buffer[i] == 's')
{
if (buffer[i + 1])
d = 3;
else
d = 2;
}
//用 法: int strncmp(char *str1, char *str2, int maxlen)
//说明:此函数功能即比较字符串str1和str2的前maxlen个字符
//如果前maxlen字节完全相等,返回值就 = 0;在前maxlen字节比较过程中
//如果出现str1[n]与str2[n]不等,则返回(str1[n] - str2[n])
for (int k = 0; k < 9; k++)
if (strncmp(buffer + i, ss[k], d) == 0)
j = k + 1;
sum = 10 * sum + j;
i = i + d;
}
return sum;
}
测试范例:
yiersanwuqijiuba
1235798
int main()
{
string s;
cin >> s;
int outsum = fun(s);
cout << outsum << endl;
return 0;
}