MFC字符串CString分割函數 簡潔 C++

介紹:

適用於.txt、.dat文件讀取後運用字符串分割函數

這是我目前找得到的最簡單的CString字符串分割函數

//***********************************
//字符分割函數
//***********************************
int Do::Div(const CString strLine, char split, CStringArray &strArray)
{
	strArray.RemoveAll();//自帶清空屬性
	CString temp = strLine;
	int tag = 0;
	while (1)
	{
		tag = temp.Find(split);
		if (tag >= 0)
		{
			strArray.Add(temp.Left(tag));
			temp = temp.Right(temp.GetLength() - tag - 1);
		}
		else { break; }
	}
	strArray.Add(temp);
	return strArray.GetSize();
}

演示(VS2010/VS2017):

演示代碼:

int Div(const CString strLine, char split, CStringArray &strArray)
{
	strArray.RemoveAll();//自帶清空屬性
	CString temp = strLine;
	int tag = 0;
	while (1)
	{
		tag = temp.Find(split);
		if (tag >= 0)
		{
			strArray.Add(temp.Left(tag));
			temp = temp.Right(temp.GetLength() - tag - 1);
		}
		else { break; }
	}
	strArray.Add(temp);
	return strArray.GetSize();
}

void CCStringdemoDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知處理程序代碼
	//CDialogEx::OnOK();
	UpdateData(TRUE);
	CStringArray array;
	int n = Div(content, ',', array);//開始使用
	int a = _ttoi(array[1]);//_ttoi  CString->int
	double b = _tstof(array[2]);//_tstof  CString->double
	CString c = array[3]; //CString直接來承接
	

	CString strOut;
	strOut.Format(_T("%d\r\n"),a);
	sreOut1 += strOut;
	strOut.Format(_T("%f\r\n"), b);
	sreOut1 += strOut;
	strOut.Format(_T("%s\r\n"), c);
	sreOut1 += strOut;
	UpdateData(FALSE);
}

演示結果:

在這裏插入圖片描述

參數解釋:

形參strLine: 是用來承接需分割的內容 例如我的上例:A,99.9,11.23456,Success! 實參是 content
形參split: 是基於什麼來分割 我的例子是英文的, 所以參數裏面是 實參是 ‘,’
形參strArray: 分割後的內容按先後順序放入 我的例子 實參是新建的CStringArray型 array
返回值n:返回strArray中的大小

分割後的內容全部裝在strArray中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章