CString 字符串简单包含的函数

在OC和Java中,都是有字符串包含的函数的,也就是A包含B的函数,但是在C++中是么有的,到了MFC中,CString中还是没有包括进来,所以在这里我简单的构造了一个类似的函数:

BOOL StringContainOtherString(CString szParentString, CString szChildString)
{
    int nParLength = szParentString.GetLength();
    int nChiLength = szChildString.GetLength();
    
    if(nParLength < nChiLength)
    {
        return FALSE;
    }
    else if(nParLength == nChiLength)
    {
        if(szParentString == szChildString)
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
    else if(nParLength > nChiLength)
    {
        if(nChiLength == 1)
        {
            int nFind = szParentString.Find(szChildString);
            if(nFind != -1)
            {
                return TRUE;
            }
            else
            {
                return FALSE;
            }
        }
        else if(nChiLength > 1)
        {
            CString szFirstWord = szChildString.Left(1);
            int nFind = szParentString.Find(szFirstWord);
            if(nFind == -1)
            {
                return FALSE;
            }
            else if(nParLength - nFind < nChiLength)
            {
                return FALSE;
            }
            else
            {
                for(int i = 0; i < nParLength + 1 - nFind - nChiLength; i++)
                {
                    CString szCompareString = szParentString.Mid(nFind + i, nChiLength);
                    if(szCompareString == szChildString)
                    {
                        return TRUE;
                    }
                }
            }
        }
    }
}

简单的说一下实现过程,有两种实现方法(我想到的只有两种稍微简单点),一种是去母版之中遍历找,当然我操作了一下,从子串的第一个开始找,不然的话就更麻烦了,还有一种是先找到子串的第一个字符在母版中的位置,然后根据子串的长度在母版中从找到的位置截取同样的长度,进行比较,有相同的就包含了,这个是不是更简单?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容