📄 simplestring.cpp
字号:
// SimpleString.cpp: implementation of the CSimpleString class.
//
//////////////////////////////////////////////////////////////////////
#include "SimpleString.h"
#include <iostream.h>
#include <assert.h>
#include <string.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//接收一个字符串指针(char *)的构造函数
CSimpleString::CSimpleString(const char *s)
{
length=strlen(s);
sPtr=new char [length+1];
strcpy(sPtr,s);
}
//拷贝构造函数
CSimpleString::CSimpleString(const CSimpleString ©)
{
length=copy.length;
sPtr=new char [length+1];
strcpy(sPtr,copy.sPtr);
}
//析构函数
CSimpleString::~CSimpleString()
{
delete [] sPtr;
}
//赋值运算符
const CSimpleString & CSimpleString::operator = (const CSimpleString &string)
{
if( & string != this)
{
delete[] sPtr;
length=string.length;
sPtr=new char [length+1];
strcpy(sPtr,string.sPtr);
}
else
cout<<"Attempted assignment of a CSimpleString to itself\n";
return *this;
}
//字符串连接(+)
CSimpleString & CSimpleString::operator+ (const CSimpleString &string)
{
CSimpleString *tempPtr=new CSimpleString;
tempPtr->length=length+string.length;
strcpy(tempPtr->sPtr,this->sPtr);
strcat(tempPtr->sPtr,string.sPtr);
return *tempPtr;
}
//字符串连接(+=)
CSimpleString & CSimpleString::operator += (const CSimpleString &string)
{
char * tempPtr=sPtr;
length+=string.length;
sPtr=new char [length+1];
strcpy(sPtr,tempPtr);
strcat(sPtr,string.sPtr);
delete [] tempPtr;
return *this;
}
//强制类型转换运算符
CSimpleString::operator const char*() const
{
char *tempPtr=new char [length+1];
strcpy(tempPtr,sPtr);
return tempPtr;
}
//字符串输出
ostream &operator<< (ostream &output,const CSimpleString &s)
{
output<<s.sPtr;
return output;
}
//测试s1==s2
int operator ==(const CSimpleString &s1,const CSimpleString &s2)
{ return strcmp (s1.sPtr,s2.sPtr) !=0; }
//测试s1<s2
int operator < (const CSimpleString &s1,const CSimpleString &s2)
{ return strcmp (s1.sPtr,s2.sPtr) < 0; }
//测试s1>s2
int operator > (const CSimpleString &s1,const CSimpleString &s2)
{ return strcmp (s1.sPtr,s2.sPtr) > 0; }
//下标运算符
char &CSimpleString::operator [] (int i)
{
assert(i >= 0 && i < length);
return sPtr [i];
}
//获取字符串的长度
int CSimpleString::GetLength ()const
{ return length; }
//判断字符串是否为空
bool CSimpleString::IsEmpty()
{
if(length==0) return true;
else return false;
}
//清空当前字符串
void CSimpleString::empty()
{
delete []sPtr;
char* s="";
length=strlen(s);
sPtr=new char [length+1];
strcpy(sPtr,s);
}
//将当前字符串倒置
void CSimpleString::MakeReverse()
{
int i=0,j=length-1;
char ch;
for( ;i<length/2;i++,j--)
{
ch=sPtr[i];
sPtr[i]=sPtr[j];
sPtr[j]=ch;
}
}
//当前字符串变成大写字符串
void CSimpleString::MakeUpper()
{
for(int i=0;i<length;i++)
if(sPtr[i] >= 97 && sPtr[i] <= 122) sPtr[i]-=32;
}
//当前字符串变成小写字符串
void CSimpleString::MakeLower()
{
for(int i=0;i<length;i++)
if(sPtr[i] >=65 && sPtr[i] <= 90) sPtr[i]+=32;
}
//去除当前字符串的前导空格字符
void CSimpleString::TrimLeft()
{
char* p=sPtr;
while(*p == 32)
{
p++;
length--;
}
char *tempPtr = new char[length+1];
strcpy(tempPtr,p);
delete []sPtr;
sPtr=tempPtr;
}
//去除当前字符串的后缀空格字符
void CSimpleString::TrimRight()
{
char* p=sPtr+length-1;
while(*p == 32)
{
p--;
length--;
}
*(++p)='\0';
char *tempPtr = new char[length+1];
strcpy(tempPtr,sPtr);
delete []sPtr;
sPtr=tempPtr;
}
//插入字符
void CSimpleString::Insert(int nIndex, char ch)
{
char *tempPtr = new char[length+2];
if(nIndex<=length)
{
for(int i=0; i<nIndex; i++) tempPtr[i]=sPtr[i];
tempPtr[i]=ch;
for( ; i<=length; i++) tempPtr[i+1]=sPtr[i];
}
else
{
strcpy(tempPtr,sPtr);
tempPtr[length]=ch;
tempPtr[length+1]='\0';
}
length++;
delete []sPtr;
sPtr=tempPtr;
}
//删除字符
bool CSimpleString::Delete(int nIndex, int nCount)
{
if(nIndex >= 0 && nIndex < length && (nIndex+nCount) <= length)
{
char *tempPtr = new char[length+1-nCount];
for(int i=0; i<nIndex; i++) tempPtr[i]=sPtr[i];
for( ; i<length; i++) tempPtr[i]=sPtr[i+nCount];
length -= nCount;
delete []sPtr;
sPtr=tempPtr;
return true;
}
else
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -