首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC++ 字串自由分割類別 CSplitStr 實作與應用

     編輯:關於VC++

需求背景

程式開發中常需依特定分隔符號分割字串。CString 提供基礎操作,本文封裝通用分割類別 CSplitStr,支援連續分隔符合併處理。

類別設計

class CSplitStr {
private:
    CString m_sSplitFlag;      // 分隔符號
    BOOL    m_bSequenceAsOne;  // 連續分隔符視為一個
    CString m_sData;           // 待分割字串

public:
    void GetSplitStrArray(CStringArray& array);  // 取得分割結果
    CString GetData(); void SetData(CString);
    BOOL GetSequenceAsOne(); void SetSequenceAsOne(BOOL);
    CString GetSplitFlag(); void SetSplitFlag(CString);
    CSplitStr(); virtual ~CSplitStr();
};

核心分割演算法

void CSplitStr::GetSplitStrArray(CStringArray& array)
{
    CString sData = GetData();
    CString sFlag = GetSplitFlag();
    if (sData.Right(1) != sFlag) sData += sFlag;  // 確保結尾有分隔符

    CString sTemp;
    int pos = -1;
    while ((pos = sData.Find(sFlag, 0)) != -1) {
        sTemp = sData.Left(pos);
        if (!GetSequenceAsOne()) {
            array.Add(sTemp);  // 保留空欄位
        }
        else {
            if (!sTemp.IsEmpty())  // 連續分隔符合併,略過空欄位
                array.Add(sTemp);
        }
        sData = sData.Right(sData.GetLength() - pos - 1);
    }
}

使用範例

#include 
#include "SplitStr.h"

CSplitStr Split;
CString m_sText = _T("你好,,歡迎使用文本切分類,作者:江上飛鳥,qq: 36201365");

Split.SetSplitFlag(_T(","));
Split.SetSequenceAsOne(TRUE);  // 合併連續分隔符
Split.SetData(m_sText);

CStringArray array;
Split.GetSplitStrArray(array);

// 結果:
// array[0] = "你好"
// array[1] = "歡迎使用文本切分類"
// array[2] = "作者:江上飛鳥"
// array[3] = "qq: 36201365"

特性總結

  • 支援任意字串作為分隔符 (非單一字元)
  • 可選擇是否合併連續分隔符
  • 輸出標準 CStringArray,易於遍歷
  • 輕量級,無外部依賴,直接整合 MFC 專案
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved