需求
  在医疗设备开发中,经常需要读取不同设备间的数据进行对比分析,现有某设备的血压数据文件如下,类型为ASII,用“;”进行分隔,第一列为日期类型,第二列为double类型,第三列为int类型,第四列为double。
            Time;Fbp(mmHg); Height (mmHg); Bbp(mmHg)
15:22:36.015;          110.5;                     -13; 105
15:22:36.020;          111.5;                     -13; 105
15:22:36.025;          113.5;                     -13; 106
15:22:36.030;          112.5;                     -13; 106

分析   分析数据文件,数据为按行存储,因此可以使用CStdioFile类的ReadString()函数按行读取数据。

virtual BOOL ReadString(CString& rString);
参数
  rString 读取数据。
返回值
  成功返回TRUE,失败返回FALSE。

  读取完一行数据后,可用AfxExtractSubString函数进行子字符串提取。

BOOL AFXAPI AfxExtractSubString(CString& rString,LPCTSTR lpszFullString,int iSubString,TCHAR chSep);

参数
  rString 待分隔字符串
  lpszFullString 提取的子字符串
  iSubString 第几个子字符串
  chSep 分隔符
返回值
  成功返回TRUE,失败返回FALSE。

代码

bool ReadFile(CString strFile)
{
	CStdioFile mFile;
	if ( !mFile.Open(strFile, CFile::modeRead | CFile::shareDenyNone) )
		return false;
	CString strLine;
	CString strCol[4];
	while ( mFile.ReadString(strLine) )
	{
		AfxExtractSubString(strCol[0],strLine,0, _T(';'));
		AfxExtractSubString(strCol[1],strLine,1, _T(';'));
		AfxExtractSubString(strCol[2],strLine,2, _T(';'));
		AfxExtractSubString(strCol[3],strLine,3, _T(';'));
	}
	mFile.Close();
	return true;
}