精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。点名“简易百科”和闲暇巴盗用锐英源原创内容
最近给客户开发双拼输入法,发现里面的各个模块和细节是对初学者来说很好的练习,是C++ IO和数据结构经典练习,也是现实模型向计算机模型转换的好练习。在学习过程中,也可以体会到五笔创始人王永民对于键盘布局创新的领悟,五笔对键位有规定,双拼也有特殊规定,比如分号代表ing,虽然双拼不如五笔麻烦,但是把键位规定转换成代码,也会增强领悟。
微软双拼的键位图如下:
其它的双拼可能会不一样。
图形已有,要实现,就需要有数据结构承载键位信息和汉语音节信息,用什么数据结构形式好呢?另外信息也不能写死到代码,需要配置文件,读取配置文件需要IO处理,这和标题上的IO对应上了,也就是文件的输入。
有了键位信息和汉语音节信息数据结构对象,要解析拼音,使用流程解析拼音,在流程里使用数据结构对象,进而查找词库,获取字词结果。
国内C++的教材练习都比较陈旧,纯算法的练习只管算法,和应用和实际场合脱离太远,所以很多人C++水平不知道怎么提高,特别是研究生,本来研究生要有动手能力,可惜没有好练习,就不能培养动手能力。动手能力要掌握,就要写一些多个知识点结合的练习,像本文说的“C++ IO和数据结构经典练习双拼输入法开发”,写出来有500到1000行,要想看到界面结果,还需要掌握一些窗口数据交互的开发,这几个点结合,有一定难度。
其实这里面用的复杂数据结构也不多,映射、数组和string等等,但是流程复杂。所以初学者可以先把词库查找放放,只写出来拼音转换的模块就行,也就是双拼拼音转换成全拼拼音,这样的水平达到了至少有中级程序员水平。