当前位置:编程学习 > C/C++ >>

求教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++ 手机电话簿

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,