转载连接: https://blog.youkuaiyun.com/rundll64/article/details/24548301
-
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]);
本文介绍了一个使用C++实现的字符串分割类CSplitStr,该类能够将字符串按照指定的分隔符进行分割,并提供了处理连续分隔符的选项。通过设置不同的参数,可以灵活地对各种格式的字符串进行分割。
3248

被折叠的 条评论
为什么被折叠?



