91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

自己模擬寫C++中的String類型實例講解

發布時間:2020-08-22 19:08:11 來源:腳本之家 閱讀:167 作者:jingxian 欄目:編程語言

下面是模擬實現字符串的相關功能,它包括一下功能:

String(const char * s);//利用字符串來初始化對象
String();      //默認構造函數
String(const String & s);//復制構造函數,利用String類型來初始化對象
~String();      //析構函數
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);//重載輸出函數
friend istream & operator>>(istream & is,String & st2);//重載輸入函數
static int HowMang()//返回總共生成的String類對象的數目。

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類型實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柳河县| 大足县| 运城市| 井研县| 慈利县| 阜阳市| 黔东| 郸城县| 新竹市| 蕉岭县| 翁牛特旗| 清镇市| 石家庄市| 双柏县| 朝阳区| 隆回县| 巴中市| 漾濞| 托克托县| 凤台县| 滁州市| 冀州市| 鄂托克旗| 滨州市| 尚义县| 武义县| 乌兰浩特市| 邯郸县| 永昌县| 句容市| 江城| 修武县| 淮北市| 白河县| 马尔康县| 建宁县| 吴忠市| 麦盖提县| 封开县| 刚察县| 新昌县|