自己模擬寫C++中的String類型實例講解
下面是模擬實現(xiàn)字符串的相關功能,它包括一下功能:
String(const char * s);//利用字符串來初始化對象
String(); //默認構造函數(shù)
String(const String & s);//復制構造函數(shù),利用String類型來初始化對象
~String(); //析構函數(shù)
int length(); //返回String類型中字符串的長度
String & operator=(const String & s);//重載=運算符。
String & operator=(const char *);
char & operator[](int i); //重載【】運算符
const char & operator[](int i) const;
friend bool operator<(const String & st,const String & st2);//重載<運算符,用來比較String類型中字符串的大小。
friend bool operator>(const String & st,const String & st2);
friend bool operator==(const String & st,const String & st2);//重載==運算符,判斷兩個String對象是否相等
friend ostream & operator<<(ostream & os,const String & st2);//重載輸出函數(shù)
friend istream & operator>>(istream & is,String & st2);//重載輸入函數(shù)
static int HowMang()//返回總共生成的String類對象的數(shù)目。
String.h:
#ifndef STRING_H_INCLUDED
#define STRING_H_INCLUDED
#include"iostream"
#include<string.h>
using std::ostream;
using std::istream;
class String{
private:
char * str;
int len;
public:
static int num_strings;
static const int CINLM=80;
String(const char * s);
String();
String(const String & s);
~String();
int length();
String & operator=(const String & s);
String & operator=(const char *);
char & operator[](int i);
const char & operator[](int i) const;
friend bool operator<(const String & st,const String & st2);
friend bool operator>(const String & st,const String & st2);
friend bool operator==(const String & st,const String & st2);
friend ostream & operator<<(ostream & os,const String & st2);
friend istream & operator>>(istream & is,String & st2);
static int HowMang()
{
return num_strings;
}
};
#endif // STRING_H_INCLUDED
String.cpp:
#include<iostream>
#include"String.h"
#include"string.h"
using namespace std;
int String::num_strings=0;
int String::length()
{
return this->len;
}
String::String(const char * s)
{
len=strlen(s);
str=new char[len+1];
num_strings++;
}
String::String()
{
str=0;
len=0;
num_strings++;
}
String::String(const String & s)
{
num_strings++;
len=strlen(s.str);
str=new char[len+1];
strcpy(str,s.str);
}
String::~String()
{
--num_strings;
delete [] str;
len=0;
}
String & String::operator=(const String & s)
{
if(this==&s)
return *this;
delete [] str;
len=strlen(s.str);
str=new char[len+1];
strcpy(str,s.str);
// num_strings++;
}
String & String::operator=(const char * s)
{
len=strlen(s);
str=new char[len+1];
strcpy(str,s);
// num_strings++;
}
char & String::operator[](int i)
{
return str[i];
}
const char & String::operator[](int i) const
{
return str[i];
}
bool operator<(const String & st,const String & st2)
{
if(strcmp(st.str,st2.str)<0)
return true;
else
return false;
}
bool operator>(const String & st,const String & st2)
{
return (st<st2)==false;
}
bool operator==(const String & st,const String & st2)
{
if(strcmp(st.str,st2.str)>0)
return true;
else
return false;
}
ostream & operator<<(ostream & os,const String & st2)
{
os<<st2.str;
return os;
}
istream & operator>>(istream & is,String & st2)
{
char temp[String::CINLM];
is.get(temp,String::CINLM);
if(is)
st2=temp;
while(is&&is.get()!='\n')
continue;
return is;
}
main.cpp:
#include <iostream>
#include"String.h"
using namespace std;
int main()
{
String name[5];
char temp[10];
int i;
for(i=0;i<5;i++)
{
cin.get(temp,10);
while(cin&&cin.get()!='\n')
continue;
if(!cin&&temp[0]=='\0')//如果是空串的話,cin會為false
break;
else
name[i]=temp;
}
int total=i;
int firs=0,shor=0;
if(total<0)
{
cout<<"沒有輸入"<<endl;
}else{
for(i=0;i<total;i++)
{
cout<<name[i][0]<<":"<<name[i]<<endl;
}
for(i=0;i<total;i++)
{
if(name[i]<name[firs])
firs=i;
if(name[i].length()<name[shor].length())
shor=name[i].length();
}
}
cout<<"最短的字符串為:"<<name[shor]<<endl;
cout<<"最前面的字符串為:"<<name[firs]<<endl;
return 0;
}
以上這篇自己模擬寫C++中的String類型實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
您可能感興趣的文章
- 01-10大數(shù)(高精度數(shù))模板(分享)
- 01-10C++大數(shù)模板(推薦)
- 01-10快速模式匹配算法(KMP)的深入理解
- 01-10深入串的模式匹配算法(普通算法和KMP算法)的詳解
- 01-10C++ 模版雙向鏈表的實現(xiàn)詳解
- 01-10ACE反應器(Reactor)模式的深入分析
- 01-10用代碼和UML圖化解設計模式之橋接模式的深入分析
- 01-10linux c模擬ls命令詳解
- 01-10下標操作符重載模擬多維數(shù)組詳解
- 01-10淺析C++中模板的那點事


閱讀排行
本欄相關
- 04-02c語言函數(shù)調用后清空內存 c語言調用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調用函數(shù)求fibo C語言調用函數(shù)求
隨機閱讀
- 01-10C#中split用法實例總結
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法


