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

SplitStr.h

#pragma once


// CSplitStr

class 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"


// CSplitStr

IMPLEMENT_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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值