VC字符串根据指定字符分割成CStringArray

来源:互联网 发布:并发编程网 lock 编辑:程序博客网 时间:2024/06/01 10:10
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 Split;

CString m_sText = "鹅 鹅 鹅,曲项向天歌,白毛浮绿水,红掌拨清波";

Split.SetSplitFlag(",");

Split.SetSequenceAsOne(TRUE);

Split.SetData(m_sText);

CStringArray array;

Split.GetSplitStrArray(array);

AfxMessageBox(array[0]);


0 0
原创粉丝点击