编写一个函数模版,能够处理整数、实数、串类对象的大小比较,返回两个值中的最小者。为了能够处理字符数组存储的字符串的大小比较,则需要使用函数重载的形式。为了能够处理串类对象的大小比较,则需要对串类实现关系运算符'>'或'<'的重载。 主函数如下,请勿修改: int main() { int x,y; double a,b; char c1[20],c2[20],c3[20],c4[20]; cin>>x>>y; cout<<Min(x,y)<<endl; cin>>a>>b; cout<<Min(a,b)<<endl; cin>>c1>>c2; cout<<Min(c1,c2)<<endl; cin>>c3>>c4; String s1(c3),s2(c4); cout<<Min(s1,s2)<<endl; return 0; }
时间: 2024-02-28 11:53:35 浏览: 66
比较字符串大小
5星 · 资源好评率100%
以下是函数模板和对串类的重载实现:
```cpp
#include<iostream>
#include<string.h>
using namespace std;
template<typename T>
T Min(T a, T b){
return a < b ? a : b;
}
int Min(char* a, char* b){
return strcmp(a, b) < 0 ? a : b;
}
class String{
char* str;
public:
String(const char* s){
str = new char[strlen(s)+1];
strcpy(str, s);
}
char* getStr(){
return str;
}
bool operator<(String s){
return strcmp(str, s.getStr()) < 0;
}
};
String Min(String s1, String s2){
return s1 < s2 ? s1 : s2;
}
int main() {
int x,y;
double a,b;
char c1[20],c2[20],c3[20],c4[20];
cin>>x>>y;
cout<<Min(x,y)<<endl;
cin>>a>>b;
cout<<Min(a,b)<<endl;
cin>>c1>>c2;
cout<<Min(c1,c2)<<endl;
cin>>c3>>c4;
String s1(c3),s2(c4);
cout<<Min(s1,s2).getStr()<<endl;
return 0;
}
```
注意,在对串类进行大小比较时,需要重载关系运算符`<`,并且在主函数中调用时,需要使用返回的String对象的getStr()方法获取其内部存储的char*类型字符串。
阅读全文