当前位置: 首页 > 图文教程 > 开发语言 > VC++ > VC+6.0实现文本串的自由拆分

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 VC+6.0实现文本串的自由拆分


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 87 ::
收藏到网摘: n/a

VC+6.0实现文本串的自由拆分

作者:江上飞鸟

下载源代码

  在做程序时,经常需要把文本按固定的标志进行拆分,CString 类提供了一些基本的字符串操作,本文就是利用CString类的基本函数来实现文本串的自由拆分 ,如下图:




一、文本串拆分类的设计
  对文本的拆分封装成一个独立的类,以便代码重用,类的设计具体如下:

SplitStr.h class CSplitStr{private:	//切分的标志符号	CString m_sSplitFlag;	//连续的切分的标志符号当成一个标志处理	BOOL m_bSequenceAsOne;	//被切分的文本	CString m_sData;public:	//得到切分好的文本串	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;};	CSplitStr();	virtual ~CSplitStr();};

实现文件:SplitStr.cpp

//构造函数CSplitStr::CSplitStr(){	SetData("");	SetSequenceAsOne(TRUE);	SetSplitFlag(","); } CSplitStr::~CSplitStr(){ } //设置文本函数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);	}}

二、文本串拆分类的的使用

#include <afxtempl.h>#include "SplitStr.h" CSplitStr Split;Cstring m_sText = “你好,,欢迎使用文本切分类,作者:江上飞鸟,qq: 36201365”;Split.SetSplitFlag(",");Split.SetSequenceAsOne(TRUE);Split.SetData(m_sText);CStringArray array;Split.GetSplitStrArray(array);
最好的输出结果是:
array[0] = “你好”;array[1] = “欢迎使用文本切分类”;array[2] = “作者:江上飞鸟”;array[3] = “qq: 36201365”;