String类简单实现

原文地址:http://rsljdkt.iteye.com/blog/774188

  1 #include "stdafx.h"
  2 #include "stdlib.h"
  3 #include<iostream>
  4 using namespace std;
  5
  6 class String
  7 {
  8 public:
  9     String(const char *str = NULL);//默认构造函数
 10     String(const String &str);//拷贝构造函数
 11     ~String();
 12     String operator + (const String &str);//字符串连接
 13     String &operator = (const String &str);//字符串赋值
 14     bool operator == (const String &str);//字符串比较
 15     int Length();//获取字符串长度
 16     friend ostream & operator <<(ostream &o,const String &str);//输出重载
 17     String Substr(int start,int end);//求子串
 18 private:
 19     char *data;
 20 };
 21
 22 String::String(const char* str)
 23 {
 24     if(str == NULL)
 25     {
 26         data = new char[1];
 27         data[0] = ‘\0‘;
 28     }
 29     else
 30     {
 31         data = new char[strlen(str)+1];
 32         strcpy(data,str);
 33     }
 34 }
 35 String::String(const String &str)
 36 {
 37     data = new char[strlen(str.data)+1];
 38     strcpy(data,str.data);
 39 }
 40 String::~String()
 41 {
 42     delete [] data;
 43 }
 44
 45 String String::operator+(const String &str)
 46 {
 47     String res;
 48     delete[] res.data;
 49     res.data = new char[strlen(data) + strlen(str.data)+1];
 50     strcpy(res.data,data);
 51     strcpy(res.data+strlen(data),str.data);
 52     return res;
 53 }
 54
 55 String &String::operator=(const String &str)
 56 {
 57     if(data == str.data)
 58         return *this;
 59     delete []data;
 60     data = new char[strlen(str.data)+1];
 61     strcpy(data,str.data);
 62     return *this;
 63 }
 64
 65 bool String::operator==(const String &str)
 66 {
 67     return strcmp(data,str.data) == 0;
 68 }
 69 int String::Length()
 70 {
 71     return strlen(data);
 72 }
 73 ostream & operator<<(ostream &o,const String &str)
 74 {
 75     o<<str.data;
 76     return o;
 77 }
 78
 79 String String::Substr(int s,int e)
 80 {
 81     String res;
 82     delete [] res.data;
 83     res.data = new char[e - s +1];
 84     for(int i=0;i+s < e;i++)
 85     {
 86         res.data[i] = data[s+i];
 87     }
 88     res.data[e-s] = ‘\0‘;
 89     return res;
 90 }
 91 int _tmain(int argc, _TCHAR* argv[])
 92 {
 93     String s = "abcd";
 94     String t = "abcd";
 95     cout<< s <<(s==t?"==":"!=")<<t<<endl;
 96
 97     String s1 = "Hello";
 98     String s2 = "China!";
 99     cout<<s1+s2<<endl;
100     cout<<(s1+s2).Substr(0,s1.Length()+s2.Length())<<endl;
101
102     system("pause");
103     return 0;
104 }

输出结果:

时间: 2024-11-08 05:39:21

String类简单实现的相关文章

c++ 深拷贝string类 简单实现

#include<iostream>//头文件 #pragma once using namespace std; class String { public: String(char* str="\0"); ~String(); String(const String& str ); void Cout(); char& operator[](size_t index); String operator +(const String& str);

tchar 输入输出类 和 string 类 函数简单说明 总结各种前缀后缀

标准输入输出printf类_tprintf : 类同printf_tprintf_l : 类同printf, 但是"_l"表示第二个参数是一个locale.locale是操作系统对语言设定的参数, 这个会影响ANSI字符的语言识别, 在Unicode下应该是无差别的_tprintf_s : 类图printf, 但是和_tprintf相比, _tprintf_s多会做一些检查工作.如果你的"format string"是动态的, 这个能帮助你._tprintf_s_l

简单实现string类

简单实现string类,正确管理资源. 1.首先定义它的成员变量: private:     char* _data;//定义一个字符指针 2.实现它的构造函数: String(const char* str="") //如果定义对象时没有传参数,使用缺省构造参数构造出""字符串     :_data(new char[strlen(str)+1])    //+1表示多创建一个空间存'\0' {     strcpy(_data,str); } 3.实现拷贝构造

c++string类的简单介绍

#include "iostream" #include "string" using namespace std; /*@author:浅滩 *family:c++中string类的简单介绍 *time:2019.2.12 */ int main() { string s;//string类的创建 /*下述均是string的成员函数*/ s = "123";//=直接进行赋值 cout <<"字符串长度为:"&l

一个简单实现的string类

为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 开发工具:Visual Studio 2015 CMyString类的头文件CMyString.h 1 #include <iostream> 2 3 #ifndef __C_MY_STRING__ 4 #define __C_MY_STRING__ 5 6 class CMyString 7 { 8 public: 9 //默认构造函数 10 CMyString(); 11 //

实现C++标准库string类的简单版本

后续待更新. 1 #ifndef STRING_H 2 #define STRING_H 3 4 #include <cassert> 5 #include <utility> 6 #include <iostream> 7 8 namespace jz 9 { 10 11 /************************************************************************/ 12 /* 重新实现C风格字符串处理函数 */

一个string类的简单实现

string类中使用到了赋值构造函数.复制构造函数.构造函数.默认构造函数.析构函数.重载操作符等一些类操作 class String { public: String() { data = new char; data[0]='\0'; length = 0; } String(const char* str) { length = strlen(str); data = new char[length+1]; strcpy(data,str); data[length]='\0'; } St

实现简单的string类

摘要 实现了一个string类,包括基本的构造.赋值.判断.大小写等. String API Constructors string(); string(const char& ch); string(const char* str); string(const string& str); Informational Methods unsigned Length() const; int Index(char c) const; Case Methods void UpCase(unsi

JAVA API(一)String类和StringBuffer类

1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号""之内,如"abc".在Java中定义了String和StringBuffer类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用.下面将对String类和StringBuffer类详细讲解. 1.1String类的初始