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
"),a);
	sreOut1 += strOut;
	strOut.Format(_T("%f
"), b);
	sreOut1 += strOut;
	strOut.Format(_T("%s
"), c);
	sreOut1 += strOut;
	UpdateData(FALSE);
}

演示结果:

参数解释:

形参strLine: 是用来承接需分割的内容 例如我的上例:A,99.9,11.23456,Success! 实参是 content 形参split: 是基于什么来分割 我的例子是英文的, 所以参数里面是 实参是 ‘,’ 形参strArray: 分割后的内容按先后顺序放入 我的例子 实参是新建的CStringArray型 array 返回值n:返回strArray中的大小

分割后的内容全部装在strArray中

经验分享 程序员 微信小程序 职场和发展