基于CString的字符串分割类
作者:互联网
1、头文件
#pragma once class 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; }; };
2、源文件
#include "pch.h" #include "CSplitStr.h" CSplitStr::CSplitStr() { SetData(_T("")); SetSequenceAsOne(TRUE); SetSplitFlag(_T(",")); } 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 != _T("")) // 连续的分隔符视为单个处理 { array.Add(sTemp); } } sData = sData.Right(sData.GetLength() - pos - 1); } }
3、调用示例
// INI配置文件获取字段 // [CHIP_TYPE] // TYPE=NT98332,NT98331,MCU, CIniFileEdit::CfgStrStruct strTmp; CString strKeyValue; CSplitStr SplitStr; // 加载芯片类型:格式,字段内容+,:TYPE=NT98332,98331,... m_cfgFileEdit.SetFileHandle(lpszFilePath); strTmp.lpAppName = _T("CHIP_TYPE"); strTmp.lpKeyName = _T("TYPE"); strTmp.lpFileName = NULL; m_cfgFileEdit.GetProfileString(&strTmp, strKeyValue); // 分割字符串调用示例 // 设置分隔符为',' SplitStr.SetSplitFlag(_T(",")); SplitStr.SetSequenceAsOne(TRUE); SplitStr.SetData(strKeyValue.GetString()); // 需要传入实际字符串地址 SplitStr.GetSplitStrArray(m_TypeValArray.sBuf); m_TypeValArray.nLen = m_TypeValArray.sBuf.GetCount();
标签:sSplitFlag,分割,CSplitStr,sData,void,CString,切分,字符串 来源: https://www.cnblogs.com/veis/p/16439651.html