全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

自己模拟写C++中的String类型实例讲解

下面是模拟实现字符串的相关功能,它包括一下功能:

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类型实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# C++  # String类型  # C++中string转换为char*类型返回后乱码问题解决  # C++中将string类型转化为int类型  # 关于C++ string和c类型字符数组的对比  # C++利用stringstream进行数据类型转换实例  # 利用C++实现从std::string类型到bool型的转换  # C++如何通过ostringstream实现任意类型转string  # 用标准c++实现string与各种类型之间的转换  # 浅谈C++中的string 类型占几个字节  # C++中的string类型  # 运算符  # 给大家  # 希望能  # 这篇  # 会为  # 最短  # 小编  # 最前面  # 大家多多  # ostream  # os  # istream  # st  # lt  # gt  # static  # cpp  # brush  # STRING_H_INCLUDED  # ifndef 


相关文章: 建站主机助手选型指南:2025年热门推荐与高效部署技巧  大连网站制作公司哪家好一点,大连买房网站哪个好?  网站制作服务平台,有什么网站可以发布本地服务信息?  建站之星客服服务时间及联系方式如何?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  建站之星如何取消后台验证码生成?  高端建站三要素:定制模板、企业官网与响应式设计优化  c# 在高并发场景下,委托和接口调用的性能对比  如何选择高效可靠的多用户建站源码资源?  网站图片在线制作软件,怎么在图片上做链接?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何续费美橙建站之星域名及服务?  定制建站价位费用解析与套餐推荐全攻略    手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  小建面朝正北,A点实际方位是否存在偏差?  如何撰写建站申请书?关键要点有哪些?  如何在搬瓦工VPS快速搭建网站?  如何构建满足综合性能需求的优质建站方案?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何在七牛云存储上搭建网站并设置自定义域名?  Java解压缩zip - 解压缩多个文件或文件夹实例  如何通过商城自助建站源码实现零基础高效建站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  建站之星CMS五站合一模板配置与SEO优化指南  免费网站制作appp,免费制作app哪个平台好?  如何选择靠谱的建站公司加盟品牌?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  建站之星如何配置系统实现高效建站?  建站之星3.0如何解决常见操作问题?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  头像制作网站在线制作软件,dw网页背景图像怎么设置?  北京网站制作网页,网站升级改版需要多久?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何通过宝塔面板实现本地网站访问?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在IIS管理器中快速创建并配置网站?  h5在线制作网站电脑版下载,h5网页制作软件?  建站之星图片链接生成指南:自助建站与智能设计教程  中山网站制作网页,中山新生登记系统登记流程?  如何在宝塔面板创建新站点?  建站之星代理平台如何选择最佳方案? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。