ANSI字符串类String的实现及使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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>