关于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 ...
随机推荐
- strip, 关于去除目标文件种的不必要信息
对于so动态库及可执行文件,可以直接调用不带参数的strip (-s, 即--strip-all)去除大多数不必要的信息.因为so库非常标准,所以strip之后仍然可以进行完美的动态连接:而可执行文件 ...
- 问题-delphi XE2 Stack Overflow- save your work and restart CodeGear
问题现象:某一天,启动DLEPHI XE2 后,新建一个工程,双击一个事件,“Stack Overflow- save your work and restart CodeGear delphi xe ...
- hdoj 4183 Pahom on Water
Pahom on Water Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- js学习之原型prototype(一)
1.javascript中的每个引用类型(原生的.和自定义的)都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. A.prototype ...
- flot中文说明文档 简版
Flot参考文档: 一.对绘图函数plot的调用:var plot=$.plot(placeholder,data,options) ----------- placeholder --------- ...
- Docker - 配置国内加速器加速镜像下载。
引言 由于网络原因,我们在pull Image 的时候,从Docker Hub上下载会很慢...所以,国内的Docker爱好者们就添加了一一些国内的镜像(mirror),方便大家使用. 配置阿里云加速 ...
- 错误: 找不到或无法加载主类 / Class not found
Java Resources文件上有红色感叹号存在 说明引入jar包存在错误,把引用错误的jar包去掉即可. 右键项目,Properties,Java Build Path,选中jar包remove, ...
- c# List Sort排序
Test test1 = new Test(); test1.sortIndex = ; test1.name = "; Test test2 = new Test(); test2.sor ...
- java11 Guava:谷歌开发的集合库
Guava:谷歌开发的集合库,通过build path->Add External JARs 把guava.jar包加进去. 版本控制工具:.CVS .SVN .git 所以需要下载git客户端 ...
- zepto的scrollTo,实现锚点跳转
实现功能:点击右侧字母A,实现锚点跳转功能: 有同学可能说可以直接用锚点跳转实现,是的,锚点跳转可以实现这个功能,但是有一个问题,点击跳转后,再点击返回,返回的是上次跳转的结果,具体的原理就不用多说了 ...