肇砖oj题,仅供参考,不怕被钟sir封号三周你就抄
Description
在上一题基础上,增加 myString字符串类 的方法:
-
重载 小于比较运算符 < : a 和 b 两个字符串对象,从头到尾比较a和b的对应位置字符,当 a.data[i] < b.data[i] 时,表达式 a < b 为真
-
重载 大于比较运算符 > : a 和 b 两个字符串对象,从头到尾比较a和b的对应位置字符,当 a.data[i] > b.data[i] 时,表达式 a > b 为真
-
重载 不等于运算符 != : a 和 b 两个字符串对象,从头到尾比较a和b的对应位置字符,当 a.data[i] != b.data[i] 时,表达式 a != b 为真
-
重载 等于比较运算符 == : 当 a 和 b 含字符个数相同且对应位置的字符相等时,表达式 a == b 为真
程序框架:
#include <iostream> using namespace std; 你写的代码放在这里,包括类的定义和成员函数实现 int main() { myString a, b; cin >> a; cin >> b; if ( a == b ) { cout << "a == b" << endl; } else { if ( a > b ) { cout << "a > b" << endl; } else { if ( a < b ) { cout << "a < b" << endl; } } } return 0; }
Input
第一行是一个字符串,表示对象a,字符串中不含空格
第二行是一个字符串,表示对象b,字符串中不含空格
Output
一行,参见输出样例
Sample Input
sample #1
abcd
abcd
sample #2
abce
abcef
sample #3
466
4655
Sample Output
sample #1
a == b
sample #2
a < b
sample #3
a > b
Author
#include <iostream>
using namespace std;
class myString{
private:
char *data;;
int len;
public:
myString(){
len=0;
data=new char [len];
}
~myString(){
delete []data;
}
myString &operator= ( const myString &b ){
delete []data;
len=b.len;
data=new char[len];
for(int i=0;i<len;i++){
data[i]=b.data[i];}
return *this;
}
friend ostream &operator<<(ostream &out,myString &c){
if(c.len==0) out<<"0";
else {
out<<c.len<<" : ";
for(int i=0;i<c.len;i++)
out<<c.data[i];
}
return out;
}
friend istream &operator >> (istream &in,myString &c){
string d;
myString e;
in>>d;
c.len=0;
while(d[e.len]!='\0')
e.len++;
e.data=new char [e.len];
for(int i=0;i<e.len;i++)
e.data[i]=d[i];
c = e;
return in;
}
bool operator !=(const myString &b){
int t=1;
if(len==b.len){
t=0;
for(int i=0;i<len;i++)
if(data[i]!=b.data[i])
t=1;
}
if(t==1) return true;
return false;
}
bool operator ==(const myString &b){
int t=1;
if(len==b.len){
t=0;
for(int i=0;i<len;i++)
if(data[i]!=b.data[i])
t=1;
}
if(t==1) return false;
return true;
}
bool operator <(const myString &b){
string aa=this->data;
string bb=b.data;
if(aa<bb) return true;
return false;
}
bool operator >(const myString &b){
string aa=this->data;
string bb=b.data;
if(aa>bb) return true;
return false;
}
};
int main() {
myString a, b;
cin >> a;
cin >> b;
if ( a == b ) {
cout << "a == b" << endl;
}
else {
if ( a > b ) {
cout << "a > b" << endl;
}
else {
if ( a < b ) {
cout << "a < b" << endl;
}
}
}
return 0;
}