ANSI字符串类String的实现及使用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ANSI字符串类String的实现及使用

和C#不一样,C和C++的内部都没有字符串数据类型,但是我们可以用C++建立一个实现字符串相关操作的类型:String

下面的程序分成两个部分:

(1)String类:类头String.h和类实现String.cpp

(2)String类使用演示程序Main.cpp

类头文件String.h代码如下:

#ifndef STRING_H

#define STRING_H

#include

using namespace std;

class String

{

friend ostream & operator<

friend istream & operator>>(istream & input, String & s);

public:

String(const char* = "");

String(const String &);

~String();

const String & operator=(const String &); //赋值

String & operator+=(const String &); //字符串连接

int operator!() const; //String为空?

int operator==(const String &) const; //测试s1==s2

int operator!=(const String &) const; //测试s1!=s2

int operator

int operator>(const String &) const; //测试s1>s2

int operator<=(const String &) const; //测试s1<=s2

int operator>=(const String &) const; //测试s1>=s2

char & operator[](int); //返回对字符的引用

String & operator()(int, int); //返回一个子字符串

int GetLength() const; //返回字符串的长度,不包括结尾的\0 private:

char* sPtr; //指向字符串起始位置的指针

int length; //字符串的长度

};

#endif

类实现文件String.cpp代码如下:

#include

#include

#include

#include "String.h"

ostream & operator<

{

output<

return output;

}

istream & operator>>(istream & input, String & s)

{

static char temp[100];

input>>temp;

s = temp;

return input;

}

String::String(const char * s)

{

cout<<"Convention constructor:"<

length = strlen(s);

sPtr = new char[length+1];

assert(sPtr!=0);

strcpy(sPtr, s);

}

String::String(const String & copy)

{

cout<<"Copy constructor:"<

length = copy.length;

sPtr = new char[length+1];

assert(sPtr != 0);

strcpy(sPtr, copy.sPtr);

}

String::~String()

{

cout<<"Destructor:"<

delete[] sPtr;

}

const String & String::operator=(const String & right) {

cout<<"operator = called"<< p>

相关文档
最新文档