MFC字符串分割

MFC 字符串分割

打算分割文件路径来着,文件路径分隔符是"\",但是路径前后都没有这个符号,造成处理情况比较复杂.于是想起了链表的方式,手动增加头尾分隔符,这样就只有一种前后都有分隔符的情况了,易于处理.

再拓展一下,分割普通字符串应该也不错,改成C,C++应该也不难.

// 字符串分割
void DivString(CStringArray &arr, CString strSrc, CString strDiv = _T("\\"))
{
    
    
	arr.RemoveAll();										// 清除原先的内容
	CString str = strDiv + strSrc + strDiv;					// 头尾增加切割字符串
	int iIdxFind = 0, iIdxLast = 0;							// 切割索引
	while (true) {
    
    
		iIdxFind = str.Find(strDiv, iIdxLast + 1);			// 查找结束位置
		if (iIdxFind <= 0) {
    
     break; }						// 找不到切割字符串
		iIdxLast += strDiv.GetLength();						// 新字符串的开始位置
		if (iIdxFind - iIdxLast <= 0) {
    
     continue; }			// 过滤空字符串
		arr.Add(str.Mid(iIdxLast, iIdxFind - iIdxLast));	// 添加新字符串
		iIdxLast = iIdxFind;								// 更新最新位置
	}
}

// 测试代码
void Test()
{
    
    
	// 分割路径
	CStringArray arr;
	DivString(arr, _T("C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe"));
	DivString(arr, _T(""));
	DivString(arr, _T("\\"));
	DivString(arr, _T("\\abc"));
	DivString(arr, _T("abc\\"));
}

结果还算满意.

猜你喜欢

转载自blog.csdn.net/u012101384/article/details/107102165
今日推荐