// ShStringNew.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
class SHString
{ public:
SHString(const char* Str = "")
:mStr(new char[strlen(Str) + 1])
{
strcpy(mStr, Str);
}
SHString(const SHString& Str)
:mStr(new char[strlen(Str.mStr) + 1])
{
strcpy(mStr, Str.mStr);
}
SHString& operator=(const char* Str)
{
delete[] mStr;
mStr = new char[strlen(Str) + 1];
strcpy(mStr, Str);
return *this;
}
SHString& operator=(const SHString& Str)
{
if (this != &Str)
{
delete[]mStr;
mStr = new char[strlen(Str.mStr) + 1];
strcpy(mStr, Str.mStr);
}
return *this;
}
~SHString()
{
delete[]mStr;
mStr = NULL;
} public:
char* mStr;
friend ostream& operator<<(ostream& os, SHString& S);
friend istream& operator >> (istream&, SHString& S);
SHString operator+(const SHString &other); //operator+ }; //因为模拟实现的string不是内置类型,所以要重载输出运算符,才能输出String类对象的内容
ostream& operator<<(ostream& os, SHString& Str)
{
os << Str.mStr;
return os;
} istream &operator >> (istream &input, SHString &s)
{
char temp[255]; //用于存储输入流
input >> setw(255) >> temp;
s = temp; //使用赋值运算符
return input; //使用return可以支持连续使用>>运算符
} inline SHString SHString::operator+(const SHString &other)
{
SHString NewString; NewString.mStr = new char[strlen(mStr) + strlen(other.mStr) + 1];
strcpy(NewString.mStr, mStr);
strcat(NewString.mStr, other.mStr); return NewString;
}
int main()
{
SHString Str1("abcdef");
SHString Str2("ABCDEF");
SHString Str3(Str1);
SHString Str4,Str5,Str6;
Str4 = Str1;
char* v1 = "123";
Str5 = v1;
Str6 = Str4 + Str5;
cout << "Str1->" << Str1 << endl;
cout << "Str2->" << Str2 << endl;
cout << "Str3->" << Str3 << endl;
cout << "Str4->" << Str4 << endl;
cout << "Str5->" << Str5 << endl;
cout << "Str6->" << Str6 << endl;
return 0;
}

  

自定义String的更多相关文章

  1. C++自定义String字符串类,支持子串搜索

    C++自定义String字符串类 实现了各种基本操作,包括重载+号实现String的拼接 findSubStr函数,也就是寻找目标串在String中的位置,用到了KMP字符串搜索算法. #includ ...

  2. C++基础 (5) 第五天 重载new delete () 只能操作符 自定义string类

    1 昨日回顾 1.static 对整个类共享 可以直接用 类::方法 调用 如果是私有的 可以提供一个静态的访问静态成员的方法 2 自定义的数组类-重载操作符[] 3 重载new和delete 4 重 ...

  3. 自定义String类,并且实现在STL容器中添加自定义的类型

    13.44 编写标准库string类的简化版本,命名String.你的类应该至少有一个默认构造函数和一个接受C风格字符串指针参数的构造函数.使用allocator为你的String类分配所需内存. 1 ...

  4. 自定义string类

    #include <iostream> #include <cstring> using namespace std; class String; class Data{ // ...

  5. JVM类加载器是否可以加载自定义的String

    前言 曾经有一次,面试官问到类加载机制,相信大多数小伙伴都可以答上来双亲委派机制,也都知道JVM出于安全性的考虑,全限定类名相同的String是不能被加载的.但是如果加载了,会出现什么样的结果呢?异常 ...

  6. C# String.Format大全

    C# String.Format大全 ? ? ? 十进制的数字 ? ? string.Format("{0:D3}",23) 023 格式化十进制的数字 string.Format ...

  7. 使用引用计数和copy-on_write实现String类

    本文写于2017-01-18,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6295420.html 这算是我开始复习的内容吧,关于st ...

  8. 【Java面试题】53 能不能自己写个类,也叫java.lang.String?

    可以,但是即使你写了这个类,也没有用. 这个问题涉及到加载器的委托机制,在类加载器的结构图(在下面)中,BootStrap是顶层父类,ExtClassLoader是BootStrap类的子类,ExtC ...

  9. 一道前端面试题:定义一个方法将string的每个字符串间加个空格返回,调用的方式'hello world'.spacify();

    偶然在群里看到了这道题:定义一个方法将string的每个字符串间加个空格返回,调用的方式'hello world'.spacify(); 这道题主要是对JavaScript对象原型的考察.

随机推荐

  1. 解决Android Studio卡在Gradle:Resolve dependecies 'app:_debugCompile'问题

    转载: http://blog.csdn.net/callzjy/article/details/53662073 该死的破墙,我被恶心了一个晚上. 做墙的技术员,TMD的能不能上点心,至少把技术网站 ...

  2. OnSen UI结合AngularJs打造”美团"APP"附近”页面 --Hybrid App

    1.页面效果图: 演示链接地址:http://www.nxl123.cn/bokeyuan/meiTuanDemo_near/ 2.核心代码 near.html: <ons-page id=&q ...

  3. WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...

  4. MP4文件格式

    MP4文件格式详解(ISO-14496-12/14) Author:Pirate Leo Email:codeevoship@gmail.com 一.基本概念 1. 文件,由许多Box和FullBox ...

  5. android--------Eclipse中ddms heap内存分析工具

    无 论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方. Android tools中的DDMS就带有一个很不错的内存监测工具Heap ...

  6. Problem F. Grab The Tree HDU - 6324

    题意:给出一棵n个节点的树,每个节点有一个权值,Q和T玩游戏,Q先选一些不相邻的节点,T选剩下的节点,每个人的分数是所选节点的权值的异或和,权值大的胜出,问胜出的是谁. 题解: 话说,这题后面的边跟解 ...

  7. 4.1.5 Georigia and Bob

    Problem description: Georgia and Bob 在玩一个游戏. 如图所示,排成直线的格子上放有n个棋子.棋子 i 在左数第 Pi 个格子上.Georgia 和 Bob 轮流选 ...

  8. ubuntu下常用命令

    目录 一.查找命令 二.打开相应文件 三.查看系统资源占用 四.Ubantu解压文件 五.虚拟机ubuntu server 14.0 根目录扩容 七.ubuntu 关机,重启,注销命令 1 关机命令 ...

  9. DRF之接口文档以及Xadmin

    1. 自动生成接口文档 REST framework可以自动帮助我们生成接口文档. 接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的视图. 1.1. 安装依赖 REST ...

  10. Known Notation ZOJ - 3829 (后缀表达式,贪心)

    大意:给定后缀表达式, 每次操作可以添加一个字符, 可以交换两个字符的位置, 相邻数字可以看做一个整体也可以分开看, 求合法所需最少操作数. 数字个数一定为星号个数+1, 添加星号一定不会更优. 先判 ...