c++经典面试题之String类的实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37806112/article/details/82388936
//mystring.h
#include<iostream>

using namespace std;

class String
{
	char *str;   
	int len;
	enum{CINLIM=90};    //输入字符不能超过90
public:
        String(const char *s);
	String();      
	String(const String &);
	~String();
	int length() const {return len;}
        int find(char ch);      
  
	String operator=(String s);
	String operator+=(String s);
	bool operator==(String s);
	//友元函数
	friend ostream &operator<<(ostream &os,const String &st);
	friend istream &operator>>(istream &is,String &st);
};
#include <cctype>
#include <cstring>
#include "mystring.h"

String::String()
{
	len =0;
	str=NULL;
}
String::String(const char *s)
{
	len=strlen(s);
	str=new char[len+1];
	strcpy(str,s);
}
int String::find(char ch)
{
   int i=0;
   for(i=0;i<this->len;i++)
   {
     if(this->data[i]==ch)
      {
       return i+1;
      }
   }
   return -1
}
String::String(const String &st)
{
	len=st.len;
	str=new char[len+1];
	strcpy(str,st.str);
}
String String::operator=(String s)
{
	if(this->str!=NULL)
	{	
		delete[] this->str;
	}
	this->str=new char[s.len+1];
	strcpy(this->str,s.str);
    
        this->len=s.len;
	return *this;
	
}
String String::operator+=(String s)
{
	char tmp[this->len+1];
	strcpy(tmp,this->str);
	tmp[this->len]='\0';
	delete [] this->str;
	this->str=new char[this->len+strlen(s.str)+1];
	
	strcpy(this->str,tmp);
	strcat(this->str,s.str);
	len=strlen(this->str);
	return *this;
}
bool String::operator==(String s)
{   
    
	if(this->len!=s.len)
	{
		return false;
	}
	if(strcmp(this->str,s.str)==0)
	{
		return true;
	}
        else
	{
		return false;
	}
}
String::~String()
{
     delete[] str;
}
ostream &operator<<(ostream &os,const String &st)
{
	os<<st.str;
	return os;
}
istream &operator>>(istream &is,String &st)
{
	char temp[String::CINLIM];
	is.get(temp,String::CINLIM);
	if(is)
	{
		st=temp;
	}
	while(is && is.get()!='\n')
	{
		continue;
	}
	return is;
}
#include<iostream>
#include "mystring.h"
using namespace std;

int main()
{
	String s1("I am a C++ student");
	String s2("please input your name ");
	String s3;
	//s2=s2+s1;
	//s2+=s1;
	s3=s2;
	cout<<s3<<endl;
	/*
	cout<<s2.length()<<endl;
	String ans;
	cin>>ans;
	String s3("hello");
	if(s3==ans)
	{
		cout<<"success"<<endl;
	}
	else
	{
		cout<<"false"<<endl;
	}
	*/
}

猜你喜欢

转载自blog.csdn.net/m0_37806112/article/details/82388936