求教C++ 问题
#include<iostream.h>
#include<string>
//using namespace std;
class String
{
public:
String(){p=NULL;}
String(char * str){p=str;}
friend bool operator >(String &string1,String &string2);
friend bool operator ==(String &string1,String &string2);
friend bool operator <(String &string1,String &string2);
void display();
private:
char *p;
};
bool operator >(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)>0)
return true;
else return false;
}
bool operator ==(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)==0)
return true;
else return false;
}
bool operator <(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)<0)
return true;
else return false;
}
void compare(String &string1,String &string2)
{
if(string1>string2)
{
string1.display();cout<<">";string2.display();
}
else if(string1==string2)
{
string1.display();cout<<"=";string2.display();
}
else if(string1<string2)
{
string1.display();cout<<"<";string2.display();
}
}
void String::display()
{
cout<<p;
}
int main()
{
String string1("HELLO"),string2("BOOK"),string3("AGAN");
// string string1,string2,string3;
//cin>>string1>>string2>>string3;
compare(string1,string2);cout<<endl;
compare(string1,string3);cout<<endl;
compare(string2,string3);cout<<endl;
cout<<endl;
return 0;
}
我想手动输入字符串,想把代码的指针改成字符串变量,然后再主函数中利用cin输入字符串,请教如何改啊?
追问:
在我这里编译错误,还有可以具体讲讲c_str()函数的作用吗?谢谢!
答案:#include<iostream> //iostream.h里的内容是全局的,iostream里的内容是在std的命名空间里的
#include<string>
using namespace std;class String
{
public:
//String(){p=NULL;}
//如直接赋值建议使用标准初始化构造函数如 Sring(): p(NULL) {} 及 类名 : 成员(初始化值) {表达式}
//String(char * str): p(str) {}
String() {cin >> s;}
friend bool operator >(String string1,String string2);
friend bool operator ==(String string1,String string2);
friend bool operator <(String string1,String string2);
void display();
private:
string s;
};
//单纯重载运算符用来比较,不需要对Srting类里成员做直接操作,所以也不需要用&来引用
bool operator >(String string1,String string2)
{
if(strcmp(string1.s.c_str(),string2.s.c_str())>0)
return true;
else return false;
}
bool operator ==(String string1,String string2)
{
if(strcmp(string1.s.c_str(),string2.s.c_str())==0)
return true;
else return false;
}
bool operator <(String string1,String string2)
{
if(strcmp(string1.s.c_str(),string2.s.c_str())<0)
return true;
else return false;
}
void compare(String string1,String string2)
{
if(string1>string2)
{
string1.display();cout<<">";string2.display();
}
else if(string1==string2)
{
string1.display();cout<<"=";string2.display();
}
else if(string1<string2)
{
string1.display();cout<<"<";string2.display();
}
}
void String::display()
{
cout << s;
}
int main()
{
//String string1("HELLO"),string2("BOOK"),string3("AGAN");
//string string1,string2,string3;
//cin>>string1>>string2>>string3;
String string1,string2,string3;
compare(string1,string2);cout<<endl;
compare(string1,string3);cout<<endl;
compare(string2,string3);cout<<endl;
cout<<endl;
system("pause");
return 0;
}
有不懂地方可追问
将指针变量替换成char str[100],然后直接cin>>str
你要自己重载“<<”和“>>”操作符撒
上一个:C++怎么学好?
下一个:c++ 手机电话簿