01 String类测试题

01 String类测试题,第1张

01 String类测试题

实现以下String类并测试这个类。

class String
{
private:
  char * s;
public:
  String();
  String(const char *);
  String(const String &);
  ~String();
  String & operator=(const char *);
  String & operator=(const String &);
  String operator+(const char *);
  String operator+(const String &);
  String & operator+=(const char *);
  String & operator+=(const String &);
  friend istream & operator>>(istream &, String &);
  friend ostream & operator<<(ostream &, const String &);
  friend bool operator==(const String &, const char *);
  friend bool operator==(const String &, const String &);
 friend bool operator!=(const String &, const char *);
  friend bool operator!=(const String &, const String &);
};

使用以下的main函数进行测试:

int main()
{
  String s;
  s += "hello";
  cout<> s3;
  cout << s3 << endl;
  String s4("String4"), s5(s4);
  cout << (s5 == s4) << endl;
  cout << (s5 != s4) << endl;
 String s6("End of "), s7("my string.");
  s6 += s7;
 cout << s6 << endl;
  return 0;
}

输入

s3的值

输出

一连串String类的字符串,详见样例

输入样例 1 

String3

输出样例 1

hello
String1
copy of String1
String3
1
0
End of my string.

 

#include
#include
using namespace std;
#include 
#include 
using namespace std;

class String
{
	private:
		  char * s;
	public:
		  String()//空构造函数 
		  {
		  	s=new char[1];
    			s[0]=''; //!!!
		  };
		  String(const char *a)//构造函数 
		  {
			  int length=strlen(a); 
	    		s=new char[length+1]; 
	    		strcpy(s,a); 
		  };
		  String(const String &a)//拷贝构造函数 
		  {
		  		int length=strlen(a.s); 
 				this->s=new char[length+1]; 
  				strcpy(this->s,a.s); 
		  };
		  ~String()
		  {
		  		delete [] s; 
		  };
		  String & operator=(const char *a)
		  {
			  	delete [] s;
				s=new char[strlen(a)+1];
				strcpy(this->s, a);
				return *this;
		  };
		  String & operator=(const String &a)
		  {
		  		delete [] s;
				s=new char[strlen(a.s)+1];
				strcpy(this->s, a.s);
				return *this;
		  };
		  String operator+(const char *a)//为什么不能用*this.s 
		  {
		  		String t;
				delete[] t.s;
//		  		t=*this;
		  		int length=strlen(s)+strlen(a);
		  		t.s=new char[length+1];
				strcpy(t.s,s);
		  		strcat(t.s,a);
				return t;
		  };
		  String operator+(const String &a)
		  {
		  		String t;
				delete[] t.s;
//		  		t=*this;
		  		int length=strlen(s)+strlen(a.s);
		  		t.s=new char[length+1];
				strcpy(t.s,s);
		  		strcat(t.s,a.s);
				return t;
		  };
		  String & operator+=(const char *a)
		  {
//			  	String t(a);
			  	*this=*this+a;
				return *this;
		  };
		  String & operator+=(const String &a)
		  {
		  		*this=*this+a;
				return *this;
		  };
		  friend istream & operator>>(istream &is, String &a)
		  {

				char temp[255];
				is >> temp;
				a = temp;
				return  is;
		  };
		  friend ostream & operator<<(ostream &os, const String &a)
		  {
		  		os<

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5690803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存