⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lytwstring.cpp

📁 正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字
💻 CPP
字号:
#include "LytWString.h"

LytWString::LytWString()
{
	Length=0;
	String=new wchar_t[Length+1];
	wcscpy(String,L"");
}

LytWString::LytWString(const wchar_t& Temp)
{
	Length=1;
	String=new wchar_t[Length+1];
	String[0]=Temp;
	String[1]=0;
}

LytWString::LytWString(const wchar_t* Temp)
{
	Length=(int)wcslen(Temp);
	String=new wchar_t[Length+1];
	wcscpy(String, Temp);
}

LytWString::LytWString(const LytWString& Temp)
{
	Length=Temp.Length;
	String=new wchar_t[Length+1];
	wcscpy(String, Temp.String);
}

LytWString LytWString::operator=(const wchar_t* Temp)
{
	Length=(int)wcslen(Temp);
	delete[] String;
	String=new wchar_t[Length+1];
	wcscpy(String, Temp);
	return *this;
}

LytWString LytWString::operator=(const LytWString& Temp)
{
	Length=Temp.Length;
	delete[] String;
	String=new wchar_t[Length+1];
	wcscpy(String, Temp.String);
	return *this;
}

bool LytWString::operator==(const LytWString& Temp)const
{
	if (wcscmp(String, Temp.String)==0)
		return true;
	else return false;
}

bool LytWString::operator!=(const LytWString& Temp)const
{
	if (wcscmp(String, Temp.String)!=0)
		return true;
	else return false;
}

bool LytWString::operator>(const LytWString& Temp)const
{
	if (wcscmp(String, Temp.String)>0)
		return true;
	else return false;
}

bool LytWString::operator<(const LytWString& Temp)const
{
	if (wcscmp(String, Temp.String)<0)
		return true;
	else return false;
}

bool LytWString::operator>=(const LytWString& Temp)const
{
	if (wcscmp(String, Temp.String)>=0)
		return true;
	else return false;
}

bool LytWString::operator<=(const LytWString& Temp)const
{
	if (wcscmp(String, Temp.String)<=0)
		return true;
	else return false;
}

LytWString LytWString::operator+(const LytWString& Temp)const
{
	wchar_t* s=new wchar_t[Length+Temp.Length+1];
    wcscpy(s,String);
	wcscat(s,Temp.String);
	s[Length+Temp.Length]=0;
    LytWString Result=s;
    delete[] s;
    return Result;
}

LytWString LytWString::operator+(const wchar_t* Temp)const
{
    LytWString TempLeft=String;
    LytWString TempRight=Temp;
    return TempLeft+TempRight;
}

LytWString operator+(const wchar_t* TempLeft, const LytWString& TempRight)///////////为什么不可以加const
{
    LytWString Temp=TempLeft;
    return Temp+TempRight;
}

LytWString LytWString::operator++()///////////////////////////////////
{
	String++;
	Length--;
	return *this;
}

LytWString LytWString::operator++(int)
{
	LytWString Temp=*this;
	++(*this);
	return Temp;
}

LytWString LytWString::operator--()
{
	String--;
	Length++;
	return *this;
}

LytWString LytWString::operator--(int)
{
	LytWString Temp=*this;
	--(*this);
	return Temp;
}

wostream& operator<<(wostream& Output, const LytWString& Temp)
{
	Output<<Temp.String;
	return Output;
}

wistream& operator>>(wistream& Input, LytWString& Temp)
{
	wchar_t Buffer[1000];
	Input>>Buffer;
	Temp=Buffer;
	return Input;
} 

LytWString Wchar_tToLytWString(const wchar_t& Temp)
{
	wchar_t Input[2];
	Input[0]=Temp;
	Input[1]=L'\0';
	LytWString Result=Input;
	return Result;
}

LytWString LytWString::Sub(const int Index, const int Count)const
{
	if (Index<0 || Index>Length-1 || Count<1 || Count>Length-Index)
    {
		LytWString Temp=L"";
        return Temp;
    }
    else
    {
        wchar_t* Result=new wchar_t[Count+1];
        int Position=Index;
        for(int i=0; i<=Count-1; i++)
        {
            Result[i]=String[Position];
            Position++;
        }
        Result[Count]=0;
		LytWString Temp=Result;
		delete[] Result;
		return Temp;
    }
}

void LytWString::Insert(const int Index, const LytWString Temp)
{
	if (Index>=0 && Index<=Length-1 && wcscmp(Temp.String,L"")!=0)
    {
        LytWString S1=String;
        LytWString S2=S1.Sub(0,Index);
        LytWString S3=S1.Sub(Index,Length-Index);
        S1=S2+Temp+S3;
        delete[] String;
		Length=Length+Temp.Length;
        String=new wchar_t[Length+1];
		wcscpy(String,S1.String);
    }
}

void LytWString::Delete(int Index, int Count)
{
    if (Index>=0 && Index<=Length-1 && Count>0 && Count<=Length-Index)
    {
        LytWString S1=String;
        LytWString S2=S1.Sub(0,Index);
        LytWString S3=S1.Sub(Index+Count,Length-Count-Index);
        S1=S2+S3;
        delete[] String;
        Length=Length-Count;
        String=new wchar_t[Length+1];
		wcscpy(String,S1.String);
    }
}

LytWString LytWString::ToUpper()const
{
    wchar_t* Result=new wchar_t[Length+1];
    wcscpy(Result, String);
    for (int i=0; i<=Length-1; i++)
    {
		if (Result[i]>='a' && Result[i]<='z')
			Result[i]=Result[i]-32;
    }
    Result[Length]=0;
    LytWString Temp=Result;
    delete[] Result;
    return Temp;
}

LytWString LytWString::ToLower()const
{
    wchar_t* Result=new wchar_t[Length+1];
    wcscpy(Result, String);
    for(int i=0; i<=Length-1; i++)
    {
        if (Result[i]>='A' && Result[i]<='Z')
			Result[i]=Result[i]+32;
    }
    Result[Length]=0;
    LytWString Temp=Result;
    delete[] Result;
    return Temp;
}

LytWString LytWString::Left(const int Count)const
{
    if (Count<=0 || Count>Length)
    {
        LytWString Temp=L"";
        return Temp;
    }
    else 
    {
        LytWString Temp=String;
		return Temp.Sub(0,Count);
    }
}

LytWString LytWString::Right(const int Count)const
{
    if (Count<=0 && Count>Length)
    {
        LytWString Temp=L"";
        return Temp;
    }
    else 
    {
        LytWString Temp=String;
        return Temp.Sub(Length-Count,Count);
    }
}

LytWString LytWString::TrimLeft()const
{
    if (String[0]==L' ')
    {
        int Position=0;
        bool Judge=true;
        while (Judge==true && Position<=Length-1)
        {
			if (String[Position]!=L' ')
				Judge=false;
            else Position++;
        }  
        if (Judge==false)
        {
            LytWString Temp=String;
			return Temp.Sub(Position, Length-Position);
        }
        else 
        {
            LytWString Temp=L"";
            return Temp;
        }
    }
    else
    {
        LytWString Temp=String;
        return Temp;
    }
}

LytWString LytWString::TrimRight()const
{
    if(String[Length-1]==L' ')
    {
        int Position=Length-1;
        bool Judge=true;
        LytWString Temp=String;
        while (Judge==true && Position>=0)
        {
            if (String[Position]!=L' ')
				Judge=false;
            else Position--;
        }
        if (Judge==false)
        {
            LytWString Temp=String;
			return Temp.Sub(0, Position+1);
        }
        else
        {
            LytWString Temp=L"";
            return Temp;
        }
    }
    else
    {
        LytWString Temp=String;
        return Temp;
    }
}

LytWString LytWString::Trim()const
{
    return TrimLeft().TrimRight();
}

int LytWString::Pos(const LytWString& Temp)const
{
	if (wcscmp(String, Temp.String)==0)
		return 0;
	else if(wcscmp(Temp.String, L"")==0)
		return -1;
    else
    {
        int i=-1,wei1=0,wei2=0;
		while (wei1<=Length-1 && wei2<=Temp.Length-1)
        {
			if (String[wei1]==Temp.String[wei2])
            {
                int j=wei1;
                bool pd=true;
                wei1=wei1+1;
                wei2=wei2+1;
				while (pd==true && wei1<=Length-1 && wei2<=Temp.Length-1)
                {
					if (String[wei1]!=Temp.String[wei2])
                      {pd=false;}
                    else 
                    {
                        wei1=wei1+1;
                        wei2=wei2+1;
                    }    
                }
                if (pd==true) 
                {
                    i=j;
                    break;
                }
                else 
                {
                    wei2=0;
                    wei1=j+1;;
                }
            }
            else {wei1=wei1+1;}
        }
        return i;
    }
}

int LytWString::Replace(const LytWString& Find , const LytWString& Result)
{
    LytWString S1=String;
	int k=S1.Pos(Find);
	if (wcscmp(Find.String, L"")==0 || k==-1)
		return 0;
	else if (wcscmp(Find.String, Result.String)==0)
		return 1;
	else if (wcscmp(String, Find.String)==0)
    {
        delete[] String;
		Length=Result.Length;
        String=new wchar_t[Length+1];
		wcscpy(String, Result.String);
        return 1;
    }
    else
    {
        LytWString S2;
        int i=0;
        while(k!=-1)
        {
            S1.Delete(k,Find.Length);
            S1.Insert(k,Result);
            i=i+1;
            S2=S2+S1.Sub(0,k+Result.Length+1);
            S1=S1.Sub(k+Result.Length+1,S1.Length-k-Result.Length-1);
            k=S1.Pos(Find);
        }
        delete[] String;
        Length=S2.Length;
        String=new wchar_t[Length+1];
		wcscpy(String, S2.String);
        return i;
    }
}

int LytWString::Size()const
{
	return Length;
}

wchar_t& LytWString::operator[](int Index)
{
	return String[Index];
}

const wchar_t* LytWString::Buffer()const
{
	return String;
}

LytWString::~LytWString()
{
	delete[] String;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -