turn str_pin[index];
if (code_pin[index] < char_zh) low = index;
else high = index;
}
return str_pin[code_pin[high] <= char_zh high : low];
}
/* 将中英混合字符串转化成拼音形式*/
string str_to_pin(string const &input)
{
string result ;
unsigned short char_zh;
int inputLength = input.length();
unsigned char high, low;
for (int i = 0; i < inputLength; ++i)
{
high = input[i] ;
if (high < 0x80) result.append(1, high);
else
{
low = input[++i];
char_zh = (high << 8 ) + low ;
result.append(get_pin(char_zh));
}
}
return result;
}
/* 将中英混合字符串转化成拼音形式,每个拼音后跟一个空格*/
string str_to_pin_space(string const &input)
{
string result;
unsigned short char_zh;
int inputLength = input.length();
unsigned char high, low;
for (int i = 0; i < inputLength; ++i)
{
high = input[i];
if(high < 0x80)
{
if (i > 0 && input[i-1] < 0) result.append(1, ' ');
result.append(1, high);
}
else
{
if(i > 0) result.append(1, ' ');
low = input[++i];
char_zh = (high << 8 ) + low ;
result.append(get_pin(char_zh));
}
}
return result;
}
/*
将中英及数字混合串转化成拼音,且每一连续部分之间放置一个空格。
输入必须满足只有上述三种字符的情况,正确性由调用端保证。
*/
string str_to_pin_space_(string const &input)
{
string result(1, ' ') ;
unsigned short char_zh;
int inputLength = input.length();
unsigned char high, low;
for (int i = 0; i < inputLength; ++i)
{
high = input[i] ;
if (high < 58)
{
if (i > 0 && (input[i-1] < 0 || input[i-1] > 57))
{
result.append(1, ' ');
}
result.append(1, high);
}
else if (high > 64 && high < 123)
{
if (i > 0 && (input[i-1] < 0 || input[i-1] < 58))
{
result.append(1, ' ');
}
result.append(1, high);
}
else
{
if(i > 0) result.append(1, ' ');
low = input[++i];
char_zh = (high << 8 ) + low ;
result.append(get_pin(char_zh));
}
}
return result;
}
/* 测试代码*/
int main()
{
cout << str_to_pin_space_("zhong hua人民dfd啊a152左边35gdaf共和国") << endl;
return 0;
}
摘自 学无止境的blog