`
bliuqing
  • 浏览: 66473 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

简单字符串类实现

 
阅读更多

[转 http://www.dogame.com.cn/gamerc/jc_show.php?id=6051】

main函数:
#include <iostream>
#include "strings.h"
using namespace std;
int main(){
Strings s3;
Strings s4;
Strings s5;
s3.display();
Strings s1("hello");
s1.display();
Strings s2(s1);
s2.display();
s3 = s2;
s3.display();
s4 = s1+s2;
s4.display();
s5 = s4 + "good";
s5.display();
return 0;
}

strings.h函数
#ifndef _STRINGS_
#define _STRINGS_
#include<iostream>
using namespace std;
class Strings{
public:
Strings();
Strings(char *s);
Strings(const Strings &s);
Strings& operator = (const Strings& s);
Strings& operator + (const Strings& s);
Strings& operator + (const char *s);
~Strings(){
if(str != NULL)
delete [] str;
cout<<"~Strings() is called"<<endl;
}
display();
private:
char *str;
};
#endif

strings.cpp函数
#include "strings.h"
#include <iostream>
using namespace std;
Strings::Strings(){ // 默认构造函数
str = new char('A'); //初试化为字符A
//str = "nothing"; 试试如此初试话 :-) 呵呵
cout<<"Strings is called"<<endl;
}
Strings::Strings(char *s){
str = new char[strlen(s) + 1]; // 带一个参数的构造函数
if(str)
strcpy(str, s);
cout<<"Strings(char *s) is called"<<endl;
}
Strings::Strings(const Strings &s){ // copy构造函数
str = new char[strlen(s.str) + 1];
if(str)
strcpy(str, s.str);
cout<<"Strings(const Strings &s) is called "<<endl;
}
Strings& Strings::operator = (const Strings &s){ // 赋值运算
if(this != &s){ // 如果str不是它本身
if(str != NULL)
delete [] str; //防止内存泄露
str = new char[strlen(s.str) + 1];
strcpy(str, s.str);
cout<<"Strings(const Strings &s) is called "<<endl;
}
return *this;
}
Strings& Strings::operator + (const Strings& s){ // 加法运算
char * temp;
 temp = new char[strlen(str)+strlen(s.str)+1]; //需要重新申请内存,原来的内存不够
strcpy(temp, str);
delete [] str;
strcat(temp,s.str);
str = temp;
return *this;
}
Strings& Strings::operator + (const char *s){ // 加法运算
char * temp;
temp = new char[strlen(str)+strlen(s)+1];
strcpy(temp, str);
delete [] str;
strcat(temp,s);
str = temp;
return *this;
}
Strings::display(){ // 显示函数
char *p=str;
while(*p != '\0'){
cout<<*p;
p ++;
}
cout<<endl;
cout<<"display is called "<<endl;
}

 

分享到:
评论

相关推荐

    用C++实现的一个简单的字符串类

    本项目"用C++实现的一个简单的字符串类"就是一个实例,它提供了一个自定义的字符串类,可能包含了基本的字符串操作功能。这个项目是一个VS2008的工程文件,可以直接在Visual Studio 2008环境下编译和运行,便于学习...

    基于Keil实现字符串函数string.h的简单应用

    基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用...

    封装一个,完善字符串,字符串的基本操作

    必须实现如下操作,字符串比较、求串的长度、判断串是否为空、将串置空、字符串赋值(包括两个字符串类复制,一个字符串赋值到CmyString对象)、求字符串中的一个字符或改变字符串中的一个字符(采用重载[]),完成...

    C#实现实体类与字符串互相转换的方法

    本篇文章将详细介绍如何使用C#实现实体类与字符串之间的互相转换,主要涉及到了C#的反射(Reflection)技术以及对象和字符串的转换技巧。 首先,我们来看如何将实体类转换为字符串。这个过程通常涉及到遍历实体类的...

    [字符串]字符串提取(获取两个字符串中间的字符串)

    在标准的字符串方法中,没有直接提供一个功能可以获取两个已知字符串之间的子串,但我们可以通过结合几个基本方法来实现这个功能。 1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。...

    LabVIEW删除字符串中空格

    当你需要对字符串进行操作,如删除空格,可以使用各种字符串函数来实现。以下是一些关键步骤和知识点: 1. **字符串函数面板**: 在LabVIEW中,所有的字符串函数都位于函数面板的“字符串”类别下。你可以通过菜单...

    统计字符串中子字符串出现的次数,并返回

    在上面的简单实现中,如果子字符串长度较小,每次查找可能都会遍历大部分父字符串,效率较低。为提高效率,可以考虑使用滑动窗口或KMP(Knuth-Morris-Pratt)算法等高级算法,它们可以在平均时间复杂度上达到线性...

    递归实现字符串逆序

    ### 递归实现字符串逆序 #### 知识点概览 本文将详细介绍如何使用C++中的递归技术来实现字符串的逆序操作。逆序字符串是一个常见的编程问题,在多种场景下都有应用,例如文本处理、算法设计等。通过递归方法解决此...

    stringwp_字符串类C++实现_

    标题中的"stringwp_"提示我们将探讨如何从头开始实现一个简单的字符串类。描述中提到这个实现包括多个函数,并且有测试集,这意味着我们将讨论类的构造、基本操作以及如何进行单元测试。 首先,我们需要了解字符串...

    Arduino串口接收字符串

    在 Arduino 中,字符串可以使用 String 类来实现。String 类提供了一系列的方法来操作字符串,包括字符串连接、字符串比较等。 例如,我们可以使用 String 类来将串口数据转换为字符串: ```c String comdata = "";...

    python实现字符串加密成纯数字

    首先,我们需要明白字符串到数字的转换可以通过多种方式实现,例如通过内置的int()函数将字符串转换为整数,但这并不是一种加密,因为原始信息可以直接读取。真正的加密涉及将信息转变为看似随机的形式,使得没有...

    写自定义函数stringLower()实现将一个字符串中所有大写字母变为小写字母。在主函数中输入一含有大写字母的字符串,调用该函数并输出改变后的字符串。

    这个程序展示了C++中处理字符串的能力,包括字符串类的使用、算法的运用以及标准库提供的字符转换函数。理解这些基本概念对于任何C++程序员来说都是至关重要的,因为字符串操作在许多实际问题中都会遇到。通过练习...

    C 语言 指针实现字符串的逆序调序输出

    本程序旨在通过指针实现字符串的逆序和调序输出,这两个概念是字符串操作中的常见技巧。 逆序输出字符串是指将字符串中的字符顺序反转,例如原字符串"hello"逆序后变为"olleh"。在C语言中,我们可以用指针来达到这...

    一个简单的字符串加密解密算法(C#)

    一个简单的字符串加密解密算法,使用C#语言实现。。。

    易语言八种方法倒转字符串源码

    这种方法简单直接,适用于字符串长度较小的情况。 ```易语言 .字符数组 字符串数组 .整数 反转指针 = 0 .字符串 = "Hello, World!" .整数 字符串长度 = .字符串长度() .整数 i 循环 .字符串长度 字符串数组[反转...

    实现字符串异或操作

    在编程领域,异或(XOR)操作是一种基本的逻辑运算,它在许多算法和数据处理中都有应用。本文将深入探讨如何在C#...在C#中,我们可以利用`Encoding`类进行字符串和字节数组之间的转换,结合循环和数组操作实现这些功能。

    mfc字符串加解密

    在MFC中,我们可以利用现有的加密算法,如AES(Advanced Encryption Standard)、DES(Data Encryption Standard)或者更简单的XOR运算来实现字符串的加密。 对于描述中提到的"对MFC的CString 字符串进行加密,并...

    字符串切割子字符串

    本文将基于提供的代码示例,详细讲解如何使用`strtok`函数来实现字符串的切割,并进一步探讨与之相关的知识点。 #### 一、strtok函数简介 `strok`函数是C语言库中的一个用于字符串切割的标准函数,其功能是从给定...

    比较字符串1

    标题 "比较字符串1" 描述的是一个算法训练问题,旨在比较两个字符串的字典序,并在它们不相等时找出第一个不同的字符。...在实际编程中,这类问题可能出现在数据排序、文本处理或字符串比较的场景中。

    字符串翻转(使用类库方法和stack实现)

    在Python中,有一个非常方便的内置函数`[::-1]`可以用来轻松实现字符串翻转。这个语法被称为切片操作,它可以创建一个新的字符串,包含原字符串的全部字符,但顺序相反。例如,如果你有一个字符串`s = "hello"`,你...

Global site tag (gtag.js) - Google Analytics