关于C++对汉字拼音的处理(2)
对于前面获取字符串汉字全拼音的功能,大家应该有个了解了。现在我又综合广大网友流传的获取字符串汉字拼音首字母的功能进行了整理。介绍如下
这个功能写的稍微有点复杂 使用3个函数解决了获取字符串汉字首拼音串的问题。
代码如下:
bool GetChineseCodeGBK(const char *pChineseCharacter, char *pGBK, const size_t nChineseCharacter = , const size_t nGBK = )
{
bool is_success = false; do
{
int len = sprintf_s(pGBK, nGBK, "%X%X", (unsigned char)pChineseCharacter[], (unsigned char)pChineseCharacter[]);
if (len<)
return is_success = false;
else
return is_success = true;
} while (false); return is_success;
}
char GetFirstCharacter(const char *pGBK, const size_t nGBK = )
{
int nCode2 = atol(pGBK);//error
int nCode = strtol(pGBK, NULL, );//ok
int nCode3;
sscanf_s(pGBK, "%x",&nCode3); //ok
int areacode[] = { , , , , , , , , , , , , , , , , , , , , , , , , , , };
for (int i = ; i < ; i++)
{
if (areacode[i] <= nCode && nCode < areacode[i + ])
{
return (char)('A'+i);
}
}
return (char);
}
std::string get_first_pinyin_string(const std::string &strHanzi)
{
std::string retFistPinyinString;
char retFistPinyin; if (strHanzi.empty() == true)
{
return ;
} for (size_t i = ; i < strHanzi.length(); ++i)
{
char GBK[] = { }; if (static_cast<unsigned char>(strHanzi[i]) < 0x80)
{
retFistPinyinString += strHanzi[i];
continue;
} if (GetChineseCodeGBK(&strHanzi[i], GBK))
{
retFistPinyin = GetFirstCharacter(GBK);
if ((char) != retFistPinyin)
{
retFistPinyinString += retFistPinyin;
++i;
}
}
} return retFistPinyinString;
}
下面是测试代码
int _tmain(int argc, _TCHAR* argv[])
{ std::string str_test10("任晓霞l2;哈哈哈mu男人");
std::string str_test10_rt;
str_test10_rt = get_first_pinyin_string(str_test10); return ;
}
有兴趣的朋友可以试试啦。
关于C++对汉字拼音的处理(2)的更多相关文章
- C# 获取汉字拼音首字母
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...
- 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母
通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心 ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ...
- C/C++ 获取汉字拼音
参考文章:http://blog.csdn.net/thenile/article/details/6318521 在参考文章的基础上,去掉了代码中C++特有的语法和数据类型,用纯C语言实现了获取汉字 ...
- C/C++ 获取汉字拼音首字母
#include <stdint.h> #include <stdio.h> #include <ctype.h> #include <string.h> ...
- MySQL数据库获取多个汉字拼音的首字母函数
需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组中每个汉字的拼音首字母就可以实现了,如果是固定的几组汉字,人为的拼一下就可以 了,不过项目中有多处功能需要这个效 ...
- MySQL数据库获取汉字拼音的首字母函数
需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组的拼音首字母就可以实现了,如果是固定的几个汉字,人为的拼一下就可以了,不过项目中有多处功能是需要这个效果的,并且 ...
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)
AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实 ...
- C#获取汉字拼音
C#获取汉字拼音 using System; using System.Collections.Generic; using System.Text; using System.Text.Reg ...
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
首先下载Visual Studio International Pack 1.0,官方下载地址:http://www.microsoft.com/downloads/zh-cn/details.asp ...
- OC1_汉字拼音转换 练习
// // WordManager.h // OC1_汉字拼音转换 // // Created by zhangxueming on 15/4/27. // Copyright (c) 2015年 z ...
随机推荐
- Hadoop新手学习线路指导
对于我们新手入门学习hadoop大数据存储的朋友来说,首先了解一下云计算和云计算技术是有必要的.下面先是介绍云计算和云计算技术的: 云计算,是一种基于互联网的计算方式,通过这 ...
- HW5.8
public class Solution { public static void main(String[] args) { System.out.printf("%s\t%s\t%s\ ...
- [JSOI2008]星球大战
正向进行很显然很BT, 所以逆向离线此题是个不错的选择. 使用并查集统计劫难之后的联通状态, 然后逐个添加结点即可. #include <stdio.h> #include <std ...
- ffmpeg编解码音频AAC
本次项目的需求:手机端和PC端共享同一个音视频网络源. 所以编解码需要满足手机上编码和解码原来PC端的音视频流. 这里先封装安卓手机端音频的编解码. 编译工作依然是在linux下 ubuntu 12. ...
- hdu5564--Clarke and digits(数位dp+矩阵快速幂)
Clarke and digits 问题描述 克拉克是一名人格分裂患者.某一天,克拉克变成了一个研究人员,在研究数字. 他想知道在所有长度在[l,r]之间的能被7整除且相邻数位之和不为k的正整数有多少 ...
- linux多线程编程(转)
原文地址:http://www.cnblogs.com/BiffoLee/archive/2011/11/18/2254540.html 1.Linux“线程” 进程与线程之间是有区别的,不过Linu ...
- uva 1422 - Processor(二分+优先队列)
题目链接:uva 1422 - Processor 题目大意:有一个机器要处理一些问题,给出这些问题可以开始的时间和必须完成的时间,以及任务的工作量,问说机器必须以最少每秒多少得工作量才能完成这些任务 ...
- Dom4j写XML
package com; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.I ...
- android96 内存创建图片副本,画画板
package com.itheima.copy; import android.os.Bundle; import android.app.Activity; import android.grap ...
- schedule
cocos2d-x(时间调度) 在游戏中,时常需要隔一段时间更新一些数据或者是人物位置,Cocos2D-x 中提供了这些时间调度的函数,所有CCNode 类的子类都有这样的函数. schedule(s ...