实现英文单词MyWord类,为该类提供各种功能(加法、流插入、流提取、查找、替换)

实现英文单词MyWord类,为该类提供各种功能(加法、流插入、流提取、查找、替换);

由于需要查找等功能,在其中利用了容器,便于查找单词;

 1 #include<iostream>
 2 #include<vector>
 3 #include<algorithm>
 4 #include<cstring>
 5 
 6 using namespace std;
 7 
 8 class MyWord
 9 {
10     private:
11         string data;
12         int length;
13     public:
14         MyWord(string data_ = "NULL",int length_ = 0):data(data_),length(length_) {  }
15         MyWord(const MyWord & rhs);
16         bool operator == (const MyWord & rhs)
17           {    return data == rhs.data;    }
18         MyWord operator + (const MyWord & rhs);        // + 运算符 
19         friend ostream & operator << (ostream & os ,const MyWord & rhs);    // << 流插入
20         friend istream & operator >> (istream & is , MyWord & rhs);        // >> 流提取
21         void Change(string str);                // 替换
22         void Find(string str);                // 查找
23 };
24 
25 vector <MyWord> v;                // MyWord 容器 v 
26 
27 MyWord::MyWord(const MyWord & rhs)
28 {
29     if(this != &rhs)
30     {
31         data = rhs.data;
32         length = rhs.length;
33     }
34 } 
35 
36 MyWord MyWord::operator + (const MyWord & rhs)        // +运算符 
37 {
38     return MyWord(data+rhs.data,rhs.length+length);
39 }
40 
41 ostream & operator << (ostream & os ,const MyWord & rhs)    // << 流插入 
42 {
43     cout<<"data = "<<rhs.data<<"  "<<rhs.length<<endl;
44     return (os);
45 }
46 
47 istream & operator >> (istream & is , MyWord & rhs)            // >> 流提取 
48 {
49     is>>rhs.length>>rhs.data;
50     return (is);
51 }
52 
53 void MyWord::Change(string str)            // 替换 
54 {
55     data = str;
56 }
57 
58 void Find(string str)                // 查找 
59 {
60     MyWord virtu(str,str.length());
61     vector <MyWord>::iterator p;
62     p = find(v.begin(),v.end(),virtu);
63     if(p != v.end())
64         cout<<"找到该单词 :"<<*p<<endl;
65     else
66         cout<<"该单词不存在"<<endl; 
67 }
68 
69 int main()
70 {
71     int len,n,i = 0;
72     string da; 
73     cout<<"输入单词时,请按照先输入字母个数,再输入单词的模式"<<endl;
74     cout<<"输入my  、 you "<<endl; 
75     MyWord my,you,it;
76     cin>>my>>you;
77     cout<<"分别输出 my 与 you "<<endl<<my<<you;        // 实现 << 与 >> 功能 
78     it = my + you;
79     cout<<"it = my + you = "<<it;             // 实现 + 功能 
80     cout<<"输入替换单词"<<endl;
81     cin>>da;
82     it.Change(da);
83     cout<<"it 被替换 , it = "<<it;            // 实现替换功能 
84     cout<<"输入单词个数 :"<<endl;            // 查找     
85     cin>>n; 
86     while(1)
87     {
88         cin>>it;
89         v.push_back( it ); 
90         if(++i == n)
91             break;
92     }
93     cout<<"请输入待查找单词 :"<<endl;     
94     cin>>da;
95     Find(da);                                // 查找 
96     return 0;
97 }

运行结果:

输入单词时,请按照先输入字母个数,再输入单词的模式

输入my  、 you

2 my 3 you

分别输出 my 与 you

data = my  2

data = you  3

it = my + you = data = myyou  5

输入替换单词

hujun

it 被替换 , it = data = hujun  5

输入单词个数 :

4

4 what 1 a 9 beautiful 3 day

请输入待查找单词 :

beautiful

找到该单词 :data = beautiful  9

       2020-01-11
上一篇:operator=导致的“异常安全性”。


下一篇:Oracle分析函数 — sum, rollup, cube, grouping用法