做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。
代码
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; class dictionary; class Word { public: Word(){} void set(string e,string c,string w) { english=e; chinese=c; word_class=w; } friend class dictionary; private: string english; string chinese; string word_class; }; class dictionary { public: dictionary(); void searchword(string en); int midsearch(int low,int high,string key); private: int wordNum; Word word[8000]; }; dictionary::dictionary() { fstream infile; string e,c,w; wordNum=0; infile.open("dictionary.txt",ios::in); if(!infile) { cout<<"dictionary.txt can't open"<<endl; exit(1); } while(!infile.eof()) { infile>>e>>c>>w; word[wordNum].set(e,c,w); wordNum++; } infile.close(); } int dictionary::midsearch(int low,int high,string key) { int mid; while(low<=high) { mid=(low+high)/2; if(word[mid].english==key) return mid; else if(word[mid].english>key) high=mid-1; else low=mid+1; } return -1; } void dictionary::searchword(string en) { int key=midsearch(0,wordNum-1,en); if(key) cout<<word[key].english<<"-->"<<word[key].word_class<<"\t"<<word[key].word_class<<endl; else cout<<"查无此词!"<<endl; } int main( ) { dictionary d; string w; cout<<"请输入要查找的单词:"<<endl; while(cin>>w) { d.searchword(w); } return 0; }
时间: 2024-10-09 22:54:34