我要做的是一个英语单词的相关的小程序
本来做这个提取信息是一件很简单的事情 但是由于感觉比较繁 再加上这部分学得也不牢固 就乘机来学习学习
麻烦大牛实现一下
现在有一个txt的英语单词的数据库
主要是 单词+音标(有可能有多个)+词性一+词性一下的释义一+词性一下的释义二……+词性二+……
大概就是这个意思
比如其中一个部分:
among [ә'mʌˌ] prep. 在…之中
amount [ә'maunt] n. 数量
ancient ['einʃәnt] a. 远古的
and [әnd, ænd] conj. 和
anger ['æˌgә] n. 愤怒 vt. 使发怒,激怒 vi. 发怒
angry ['æˌgri] a. 生气的
animal ['ænimәl] n. 动物
announce [ә'nauns] v. 宣布
another [ә'nʌðә] a. 另外的
answer ['ɑ:nsә] vt. 回答
anxious ['æˌkʃәs] a. 焦急的
any ['eni] a. 任何
anybody ['eniˌbɔdi, 'enibәdi] pron. 任何人
怎样写才能对各种情况都成立呢(貌似会有不少if)
(比如anybody就有两个音标 anger就有三个词性、然后及物动词还有两个释义 等等……)
现在基本的信息是
Class Word{
private:
string word="";
string soundmark[];
string charateristic[];
string* meaning[];
这是自己已经写好的……如果方便的话能不能也采用这个命名
word是具体的词 soundmark是音标 charateristic是词性 然后meaning是释义
如果有什么不对的……麻烦指正
求具体代码供学习……谢谢……
你可以定义一个vector型变量x,然后将txt中的每一行都存入该变量x,你在获取txt中的信息的时候直接获取一行,看你上面写的貌似是一行一个单词,刚好将每行的单词存入一个char数组或者string中,然后存入vector或者char[][]等容器中,方便你针对每一个单词进行操作,因为每一行都在一个数组或者string中所以可以用if语句判断从而得到所有你需要的对应的单词、英标、解释等。语言学习的一个最重要的途径就是不断地写代码,调试,改错;一定会让你获益匪浅。
不知道你想做什么程序。根据上下文判断单词的语义?还是什么。
简单从英文的角度和你解释下。有时候,有两个音标是因为美语和英语的不同,有时候是词性的不同。
其实这么理解是我们中国人的理解方式。
应该这么说,两个词性不同,但是拼法相同的单词,其实根本是两个单词。因为是两个单词,所以有不同的读音和意思。但是它们的拼法是一样的。
如果你去看英国人编写的字典,比如朗文当代英文字典,那么你会看到,其实它们是分为不同的单词词条开列的。
不客气的说,你写的那一点点代码(只能算是类定义,不算代码)基本上不能叫代码。
处理的思路很简单,从文件中先读取行,然后对行内容进行解析。
从文件中读取行,算是文件的基本操作。使用如:std::getline 的函数,或者自己读取回车换行符来判断一行的读取完成
对行内容进行分析,是基本的字符串操作,可以使用字符串切割函数 strtok 来完成。示例:C语言strtok()函数:字符串分割
不客气的说,你写的那一点点代码(只能算是类定义,不算代码)基本上不能叫代码。
处理的思路很简单,从文件中先读取行,然后对行内容进行解析。
从文件中读取行,算是文件的基本操作。使用如:std::getline 的函数,或者自己读取回车换行符来判断一行的读取完成
对行内容进行分析,是基本的字符串操作,可以使用字符串切割函数 strtok 来完成。示例:C语言strtok()函数:字符串分割
步骤1:读取txt到内存
char* psDataSource = OpenFile("你的单词库txt"); 具体百度一下windows的openfile函数
步骤2:把psDataSource解析到一个map中,单词作为索引
map mapDataBase; //Word是你定义的类(定义有错误)
for( ){
Word a;
Resolve(); //解析字符串到a ,这个得自己写
mapDataBase.add("among",“”); //把a放到map里
}
步骤3:查找
Word* pWord = mapDataBase.find("OneWord"); 使用map的find来查找你要的单词
步骤4:输出
printf();