C++ string数据类型的实现

 1 #include <cstdlib>
 2 #include <cstring>
 3
 4 class Mystring
 5 {
 6 public:
 7     Mystring(const char * pdata)
 8     {
 9         if(pdata==NULL)
10         {
11             data = new char[1];
12             *data = ‘\0‘;
13         }
14         else
15         {
16             int len = strlen(pdata);
17             data = new char[len+1];
18             strcpy(data,pdata);
19         }
20     }
21     Mystring(const Mystring &str)
22     {
23         int len = strlen(str.data);
24         data = new char[len+1];
25         strcpy(data,str.data);
26     }
27
28     Mystring &operator=(const Mystring &str)
29     {
30         if(this!=&str)
31         {
32             Mystring strTemp(str);
33             char *pTemp = strTemp.data;
34             strTemp.data = this->data;
35             this->data = pTemp;
36         }
37         return this;
38     }
39     ostream & operator<<(ostream &os,const Mystring &str)
40     {
41         os<<str.data;
42         return os;
43     }
44     Mystring & operator+(const Mystring & str)const
45     {
46         if(str.data!=NULL)
47         {
48             int len1 = strlen(str.data);
49             int len2 = strlen(this->data);
50             Mystring strTemp(*(this->data));//创建一个临时对象保存原来对象的数据
51             delete []data;//删除原来的数据
52             data=NULL;
53             data = new char[len1+len2+2];//开闭新的空间
54             strcpy(data,strTemp.data);//复制
55             strcat(data,str.data);//拼接
56         }
57         return this;
58     }
59
60     char operator[](int index)
61     {
62         int len = strlen(data);
63         if(index>len||index<0)
64         {
65             perror("index is not in the cope!");
66             exit(0);
67         }else
68             return *((this->data)+index);
69     }
70
71     ~Mystring()
72     {
73         delete []data;
74     }
75 private:
76     char * data;
77 };
时间: 2024-11-08 15:37:49

C++ string数据类型的实现的相关文章

String数据类型的转换

数据类型转换各种原始数据类型与String类型之间可以通过方法相互转换.valueOf()系列的静态方法用于从其它对象(原始数据类型对象)转换成字符串.例如:public static String valueOf(Booleanb)public static String valueOf(charc)public static String valueOf(inti)public static String valueOf(longl)public static String valueOf(

(转载)你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)

你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11) 3.5.2  字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的.很自然地,一种最简单直接的方法就是利用数组(一种数据组织管理方式,它将多个相同类型的数据元素组织起来,形成一个数据序列以便于访问.更多可以参考后文3.6小节对数组的介绍)来保存一个字符串中的各个字符,最后用一个特

REDIS学习笔记 之 STRING数据类型

作者:邹祁峰 邮箱:[email protected] 博客:http://blog.csdn.net/qifengzou 日期:2014.10.11 转载请注明来自"祁峰"的CSDN博客 1 简单概述 String数据类型是Redis中最简单.最基础的数据类型,Redis中所有的KEY和VALUE都是String类型,且其他更为复杂的数据类型(LISTS.SETS.SORTED-SETS.HASHES)也均基于String数据类型来存储的.String数据类型是二进制安全的,也就是说

Java中的String数据类型

本文主要是说明一些String数据类型的基本知识,有些杂乱,不过都是比较重要的东西,主要是参考了网上人的资料.原文网址:http://dev.yesky.com/91/2309091.shtml 主要是一下几点: 1.String是不属于8中基本数据类型的,String是一个对象. 这里补充下JAVA的8种基本数据类型:基本类型分为三类,字符型(char).布尔型(boolean).数值型(byte.short.int.long.float.double).这里数值型又可以分为两种,整数型(in

redis之string数据类型常用方法总结

目录 redis 字符串(string)[需要掌握] 特点 语法 redis 字符串(string)[需要掌握] 特点 一个键能存储512MB数据 string类型是二进制安全的,可以存储任何数据,比如jpg图片或序列化对象 redis字符串数据类型的相关命令用于管理redis字符串值,基本语法如下: 语法 ==set key values== 设置指定 key 的值 127.0.0.1:6379> set name panlifu OK 127.0.0.1:6379> get name &q

C++中string数据类型

1.string string的初始化,在C++中字符串是一种数据类型; (1).string的初始化,遍历,字符串连接 代码如下: #include<iostream> #include<string> #include<stdio.h> using namespace std; int main(void){   //string的初始化,在C++中字符串是一种数据类型;     string s1 = "abcdefg";     string

你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)

3.5.2  字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的.很自然地,一种最简单直接的方法就是利用数组(一种数据组织管理方式,它将多个相同类型的数据元素组织起来,形成一个数据序列以便于访问.更多可以参考后文3.6小节对数组的介绍)来保存一个字符串中的各个字符,最后用一个特殊字符'\0'表示字符串的结束,以此来将多个char类型的字符数据串联成字符串.例如: // 定义一个字符数组,用以保存

全面理解Java中的String数据类型

1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String() 和 new String("") 都是申明一个新的空字符串,是空串, 不是null 3. String str="kvill"  和 String str=new String ("kvill")  的区别: 先不谈堆 和 栈

string数据类型与strings模块 | Go语言基础

package main // 当前包声明 func main() { // 程序的入口 // string // Go中的字符串是一个字节的切片,是Unicode兼容的,并且是UTF-8编码的. // 字符串是一些字节的集合,可以理解为一个字符的序列. // 每个字符都又固定的位置 // 定义字符串 tempString:="hello" tempString := `hello` // 根据下表获取字符串 fmt.Println(tempString[0]) // 104 fmt.

redis笔记(一)-string数据类型

一.概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value最多可以容纳的数据长度是512M. 二.相关命令列表: 命令原型                                            时间复杂度             返回值 命令描述 APPEND key value O(1) 追加后Value的长度 如果该Key已