CString分割字符串实现

来源:互联网 发布:手机淘宝生日在哪设置 编辑:程序博客网 时间:2024/06/08 15:03

      这个类封装了CString分割字符串的功能,可以直接使用。

SplitStr.h

#pragma once// CSplitStrclass CSplitStr : public CWnd{DECLARE_DYNAMIC(CSplitStr)private://切分的标志符号CString m_sSplitFlag;//连续的切分的标志符号当成一个标志处理BOOL m_bSequenceAsOne;//被切分的文本CString m_sData;public:CSplitStr();virtual ~CSplitStr();//得到切分好的文本串void GetSplitStrArray(CStringArray &array);//得到被切分的文本CString GetData();//设置被切分的文本void SetData(CString sData);//得到切分参数BOOL GetSequenceAsOne() {return m_bSequenceAsOne;};//设置切分参数void SetSequenceAsOne(BOOL bSequenceAsOne) {m_bSequenceAsOne = bSequenceAsOne;};//得到切分标志CString GetSplitFlag() {return m_sSplitFlag;};//设置切分标志void SetSplitFlag(CString sSplitFlag) {m_sSplitFlag = sSplitFlag;};protected:DECLARE_MESSAGE_MAP()};


SplitStr.cpp

// SplitStr.cpp : 实现文件//#include "stdafx.h"#include "SplitStr.h"// CSplitStrIMPLEMENT_DYNAMIC(CSplitStr, CWnd)CSplitStr::CSplitStr(){SetData("");SetSequenceAsOne(TRUE);SetSplitFlag(",");}CSplitStr::~CSplitStr(){}BEGIN_MESSAGE_MAP(CSplitStr, CWnd)END_MESSAGE_MAP()void CSplitStr::SetData( CString sData ){m_sData = sData;m_sData.TrimLeft();m_sData.TrimRight();}CString CSplitStr::GetData(){return m_sData;}void CSplitStr::GetSplitStrArray( CStringArray &array ){CString sData = GetData();CString sSplitFlag = GetSplitFlag();if (sData.Right(1) != sSplitFlag) sData +=sSplitFlag;CString sTemp;int pos =-1;while ((pos=sData.Find(sSplitFlag,0)) != -1){sTemp = sData.Left(pos);if (!GetSequenceAsOne()){array.Add(sTemp);}else{if (!sTemp.IsEmpty() && sTemp !="") ////连续的分隔符视为单个处理{array.Add(sTemp);}}sData = sData.Right(sData.GetLength() - pos - 1);}}// CSplitStr 消息处理程序

测试程序:

    CSplitStr lsv_Split;      CString lsv_TestText = "abc#def#ghi";      CStringArray lav_Array;      lsv_Split.SetSplitFlag("#");      lsv_Split.SetSequenceAsOne(TRUE);      lsv_Split.SetData(lsv_TestText);          lsv_Split.GetSplitStrArray(lav_Array);      int i = lav_Array.GetCount();      CString lsv_Result = lav_Array[i-1];      AfxMessageBox(lsv_Result);  


本文参考了http://blog.csdn.net/lingxiu0613/article/details/8993662



2 0
原创粉丝点击