#include <stdint.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h> bool between(uint32_t start,uint32_t end,uint32_t aim);
char get_first_letter(wchar_t wchar);
void get_first_letters(const char *szChinese,char piyinBuf[],const uint32_t maxBufLen,uint32_t &piyinBufLen); int32_t main()
{
char buf[] = {};
uint32_t len = ;
const char *szChinese = "qaz123获取汉字拼音";
get_first_letters(szChinese,buf,,len);
printf("%s\n",buf);
return ;
} void get_first_letters(const char *szChinese,char piyinBuf[],const uint32_t maxBufLen,uint32_t &piyinBufLen)
{
uint8_t chr[];
piyinBufLen = ;
uint32_t chineseLen = strlen(szChinese);
for (uint32_t i = ; i < chineseLen && piyinBufLen < maxBufLen; ++i)
{
uint8_t c = szChinese[i];
// 排除askii 码
if (isascii(c))
{
piyinBuf[piyinBufLen++] = c;
}
else
{
chr[] = szChinese[i];
chr[] = szChinese[++i];
chr[] = ;
wchar_t wchr = ;
wchr = (chr[] & 0xff) << ;
wchr |= (chr[] & 0xff);
piyinBuf[piyinBufLen++] = toupper(get_first_letter(wchr));
}
}
} bool between(wchar_t start,wchar_t end,wchar_t aim)
{
if (start <= aim && aim <= end)
{
return true;
}
return false;
} char get_first_letter(wchar_t wchar)
{
if (between(0xB0A1,0xB0C4,wchar)) return 'a';
if (between(0XB0C5,0XB2C0,wchar)) return 'b';
if (between(0xB2C1,0xB4ED,wchar)) return 'c';
if (between(0xB4EE,0xB6E9,wchar)) return 'd';
if (between(0xB6EA,0xB7A1,wchar)) return 'e';
if (between(0xB7A2,0xB8c0,wchar)) return 'f';
if (between(0xB8C1,0xB9FD,wchar)) return 'g';
if (between(0xB9FE,0xBBF6,wchar)) return 'h';
if (between(0xBBF7,0xBFA5,wchar)) return 'j';
if (between(0xBFA6,0xC0AB,wchar)) return 'k';
if (between(0xC0AC,0xC2E7,wchar)) return 'l';
if (between(0xC2E8,0xC4C2,wchar)) return 'm';
if (between(0xC4C3,0xC5B5,wchar)) return 'n';
if (between(0xC5B6,0xC5BD,wchar)) return 'o';
if (between(0xC5BE,0xC6D9,wchar)) return 'p';
if (between(0xC6DA,0xC8BA,wchar)) return 'q';
if (between(0xC8BB,0xC8F5,wchar)) return 'r';
if (between(0xC8F6,0xCBF0,wchar)) return 's';
if (between(0xCBFA,0xCDD9,wchar)) return 't';
if (between(0xCDDA,0xCEF3,wchar)) return 'w';
if (between(0xCEF4,0xD188,wchar)) return 'x';
if (between(0xD1B9,0xD4D0,wchar)) return 'y';
if (between(0xD4D1,0xD7F9,wchar)) return 'z';
return '\0';
}

C/C++ 获取汉字拼音首字母的更多相关文章

  1. C# 获取汉字拼音首字母

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...

  2. C# 获取汉字拼音首字母/全拼

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...

  3. java获取汉字拼音首字母 --转载

    在项目中要更能根据某些查询条件(比如姓名)的首字母作为条件进行查询,比如查一个叫"李晓明"的人,可以输入'lxm'.写了一个工具类如下: import java.io.Unsupp ...

  4. JAVA获取汉字拼音首字母

    package com.common.util; import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Titl ...

  5. php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序.这是中国人大多数使用的排序方法.那么在php程序中该如何操作呢? 下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的 ...

  6. qt 获取汉字拼音首字母

    #include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>#include ...

  7. php 获取汉字拼音首字母的函数

    function getFirstChar($string){ if($string{0}>="A" and $string{0}<="z" )re ...

  8. 获取汉字拼音&首字母

    pinyin4j https://www.cnblogs.com/yjq520/p/7681537.html

  9. PHP获取汉字拼音首字母 截取中文字符串

    http://blog.csdn.net/everything1209/article/details/39005785 substr是按字符分割,而mb_strcut是按字节来分割,但是都不会产生半 ...

随机推荐

  1. iOS数组排序

    [_fields sortUsingComparator:^NSComparisonResult(UITextField *obj1, UITextField *obj2) { /* NSOrdere ...

  2. 二叉索引树BIT

    定义     二叉索引树,binary index tree,又名树状数组,或Fenwick Tree,因为本算法由Fenwick创造.     对于数组A,定义Query(i,j) = Ai +Ai ...

  3. POJ3252 Round Numbers(不重复全排列)

    题目问区间有多少个数字的二进制0的个数大于等于1的个数. 用数学方法求出0到n区间的合法个数,然后用类似数位DP的统计思想. 我大概是这么求的,确定前缀的0和1,然后后面就是若干个0和若干个1的不重复 ...

  4. BZOJ 1856 字符串(组合)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1856 题意:有n个1和m个0组成的串,使得任意前k个中1的个数不少于0的个数.有多少种这 ...

  5. 服务器文件系统一定要用NTFS格式。

    网络中心通过ADSL接入Internet(固定的IP地址), 网站服务通过端口映射放到了内网的两台计算机上,一台IP地址为122.9.6.1,提供Web.FTP.POP3与SMTP服务:另一台IP地址 ...

  6. Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    引用自 :http://www.2cto.com/database/201307/224836.html   Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...

  7. MS14-082引起的问题

    经常看报道说打了微软的某某补丁出了什么什么问题,但是本人从未亲身经历过,直到MS14-082这个Office补丁的出现,让我也切身体会了一番,有点中奖的感觉. 具体参见: https://suppor ...

  8. PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误

    [错误抑制符@] 除了 php.ini 中 error_reporting 和 display_errors 的设置.error_reporting() 函数.ini_set() 函数 外,还可以使用 ...

  9. MySQL 命令行导出、导入Select 查询结果

    <!-- 环境: Windows 2003 SP2 + MySQL5.5.28 Author: 博客园小dee --> 有的时候需要把在一张表中用 select 语句查询出来的结果保存到另 ...

  10. Guilty Gear Xrd 资源Rip(1)

    资源破解   首先先要下载GGXrd的PS3游戏,用psarc.exe先把游戏解包 http://files.cnblogs.com/TracePlus/psarc.exe.zip   下载UMode ...