// 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. spring cloud: Hystrix(一):简单使用

    在微服务架构中,我们将系统拆分为很多个服务,各个服务之间通过注册与订阅的方式相互依赖,由于各个服务都是在各自的进程中运行,就有可能由于网络原因或者服务自身的问题导致调用故障或延迟,随着服务的积压,可能 ...

  2. Ubuntu16.04安装

    这篇博文主要是想记录自己以前安装ubuntu的经历.当然参考了很多其他优秀的文章,在这里推荐一篇博客,请踩这个地址-->http://www.cnblogs.com/Duane/p/542421 ...

  3. Wannafly挑战赛26 B 冥土追魂

    首先,证明结果一定是取某些整行,再加上一个多余的一行的前几个. 假如: x1<=x2<=x3<=x4<=x5 y1<=y2<=y3<=y4<=y5 取6 ...

  4. hadoop挂载多硬盘,ZZ-- multiple disks per node

    hadoop挂载多硬盘 ...multiple disks per node  multiple disks per node Read more at: http://www.queryhome.c ...

  5. caffe---mnist数据集训练与测试

    1.数据.mnist_test_lmdb和mnist_train_lmdb数据 2.路径. (1)修改lenet_train_test.prototxt文件,训练和测试两处 source: " ...

  6. python-MongoDB 非关系型数据库

    一 简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库.不采用关系型主要是为了获得 ...

  7. java利用jxl实现Excel导入功能

    本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...

  8. 牛客网第一场 A Monotonic Matrix

    链接:https://www.nowcoder.com/acm/contest/139/A来源:牛客网 Count the number of n x m matrices A satisfying ...

  9. xmanager运行报错:bash: /usr/bin/xterm: No such file or directory

    1.原因 xterm没有安装,解决办法是下载然后安装即可. 如果机器可以用yum,则直接使用yum安装xterm即可: yum install -y xterm 如果没有网络,则在某台操作系统大版本相 ...

  10. 微信小程序生成二维码

    微信小程序客户端生成二维码的方法, 请参考这里: https://github.com/demi520/wxapp-qrcode  代码片段如下: const QR = require(". ...