多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 將容器中(數組、集合)的數據串成字符串

將容器中(數組、集合)的數據串成字符串

來源:程序員人生   發布時間:2015-01-22 08:33:49 閱讀次數:3282次
開發工具VC7(VS2002)
核心代碼用到MFC,測試代碼用到stl

本代碼功能,將容器中(數組、集合)的數據串成字符串

核心代碼和擴大代碼常常不是1個人完成的。 擴大代碼和使用也極可能不是1個人寫的。


//核心代碼
template<class TYPE>
class IGetEleStr
{
public:
    virtual  CString GetStr(const TYPE& ele) const =0 ;
};


class IGetSpe
{
public:
    virtual CString GetSpe(int index) const = 0;
};


template<class EleTypePtr,class EleType>//如果是stl的迭代器,EleTypePtr不等于EleType*
CString STLToStr(EleTypePtr begin,EleTypePtr end, const IGetEleStr<EleType>& ele, const IGetSpe& spe )
{
    CString str ;
    int index = 0 ;//其實不是所有的迭代器都支持相減
    for( EleTypePtr it = begin ; it != end ; ++ it )
    {
        if( 0 != index )
            str += spe.GetSpe(index);
        index++;
        str += ele.GetStr(*it);
    }
    return str;
}

//擴大代碼
class CGetConstSpe : public IGetSpe
{
public:
    CGetConstSpe(const CString strSpe)
    {
        m_strSpe = strSpe;
    }
    virtual CString GetSpe(int index) const
    {
        return m_strSpe;
    }
protected:
    CString m_strSpe;
};

template<class EleType>
class  CGetFormatStr : public IGetEleStr<EleType>
{
public:
    CGetFormatStr(const CString& strFormat)
    {
        m_strFormat = strFormat;
    }
    virtual  CString GetStr(const EleType& ele) const
    {
        CString str;
        str.Format(m_strFormat,ele);
        return str;
    }
protected:
    CString m_strFormat;
};

//測試代碼
#include "afxtempl.h"
#include <set>

void Ctest1Dlg::OnBnClickedButton11()
{
    int a[] = {3,4,5,6,7,8};
    CString str = STLToStr(a,a+sizeof(a)/sizeof(a[0]),CGetFormatStr<int>(_T("%d")),CGetConstSpe(_T(" ")));
    AfxMessageBox(str);

//    CArray<float,float> f ;
    f.Add(3.3);
    f.Add(1.02);
    f.Add(0);
    f.Add(⑴.33333334);
    str = STLToStr(f.GetData(),f.GetData()+f.GetSize(),CGetFormatStr<float>(_T("%3.1f")),CGetConstSpe(_T(",")));
//    AfxMessageBox(str);

    std::set<CString> sets;
    sets.insert(CString(_T("a")));
    sets.insert(CString(_T("c")));
    str = STLToStr(sets.begin(),sets.end(),CGetFormatStr<CString>(_T("'%s'")),CGetConstSpe(_T(",")));
    AfxMessageBox(str);
}
//結果分別為:
//3 4 5 6 7 8
//3.3,1.0,0.0,⑴.3
//'a','c'

class CGet2ConstSpe : public IGetSpe//索引+1為index的倍數,則用strSpe分隔,否則用strNormalSpe
{
public:
    CGet2ConstSpe(const CString strNormalSpe,const CString strSpe,int index)
    {
        m_strNormalSpe = strNormalSpe;
        m_strSpe = strSpe;
        m_index = index ;
    }
    virtual CString GetSpe(int index) const
    {
        if( ( m_index > 0 ) && ( index % m_index == 0 ) )
            return m_strSpe;
        return m_strNormalSpe;
    }
protected:
    CString m_strSpe;
    CString m_strNormalSpe;
    int m_index;
};

void Ctest1Dlg::OnBnClickedButton12()
{
    int a[] = {3,4,5,6,7,8};
    CString str = STLToStr(a,a+sizeof(a)/sizeof(a[0]),CGetFormatStr<int>(_T("%d")),CGet2ConstSpe(_T(" "),_T(" "),5));
    AfxMessageBox(str);
}
/*  運行結果
3 4 5 6 7
8
*/



class  CGetBOOLStr : public IGetEleStr<BOOL>
{
public:
    CGetBOOLStr(const CString& strTrue=_T("真"),const CString& strFalse=_T("假"))
    {
        m_strTure = strTrue;
        m_strFalse = strFalse;
    }
    virtual  CString GetStr(const BOOL& ele) const
    {
        return (ele) ? m_strTure : m_strFalse ;
    }
protected:
    CString m_strTure;
    CString m_strFalse;
};

void Ctest1Dlg::OnBnClickedButton13()
{
    BOOL a[] = {TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE};
    CString str = STLToStr(a,a+sizeof(a)/sizeof(a[0]),CGetBOOLStr(),CGet2ConstSpe(_T(" "),_T(" "),5));
    //AfxMessageBox(str);

    str = STLToStr(a,a+sizeof(a)/sizeof(a[0]),CGetBOOLStr(_T("√"),_T("×")),CGet2ConstSpe(_T(" "),_T(" "),5));
    AfxMessageBox(str);
}
//結果分別為
/*
真 真 假 假 真
真 真
*/
/*
√ √ × × √
√ √
*/
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 熟妇毛片 | 国产精品v| 最近免费中文字幕高清大全 | 精品日韩欧美一区二区三区在线播放 | 日韩欧美区 | xxxx张怕芝xxxxxbbbbb | 91久色视频 | 动漫精品欧美一区二区三区 | 一级做a爰片性色毛片刺激 一级做a爰片性色毛片黄书 | 最近最新的免费中文字幕 | 自拍偷拍2019 | 国产亚洲精品资源一区 | 国内成人精品视频 | 精品国产一区二区三区香蕉沈先生 | xx日本护士 | www.日本com| 亚洲精品一区二区乱码在线观看 | 在线观看一区二区三区视频 | 欧美性网站 | 伊人网在线免费视频 | 波多野结衣在线观看一区二区三区 | 在线亚洲小视频 | 国产精品福利视频一区二区三区 | 国产呦合第一系 | 欧美色图另类小说 | 高清一区二区三区免费 | 亚欧成人中文字幕一区 | 欧美xxxx三人交性视频 | 国产精品久久久久久久久久久久 | 最近中文字幕免费大全8高清 | 日本欧美一区二区三区片 | 操你网| 国产精品高清一区二区三区 | 欧美在线观看a | 日韩欧美精品综合一区二区三区 | 成人毛片一区二区三区 | 国产精品视频视频久久 | 免费国产片 | 国产精品免费视频一区一 | 欧美高清一级片 | 亚洲欧美日韩在线观看看另类 |