在写自己的账单分析程序.
要分割一个用’;'字符拼装的CString到CStringArray.
看到csdn同学写了一个, 感谢!
不过有点bug, 不能适应 "xxx;"这种情况, 修正了一下.
//***********************************
//字符分割函数
//***********************************
int Cmoney_cost_parserDlg::CStringSplit(const CString strLine, TCHAR split, CStringArray& strArray)
{
// strLine 可以是以下2种情况
// xxx;yyy
// xxx;yyy;
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; }
}
// @bugfix 如果剩下的内容不为空, 才添加到数组
if (!temp.IsEmpty())
{
strArray.Add(temp);
}
return strArray.GetSize();
}
bool Cmoney_cost_parserDlg::get_and_check_input_file(CString& strOut, CString& strIn)
{
CFileOperation file;
CString str_msg;
CStringArray strAry;
CString str;
int len = 0;
int i = 0;
this->UpdateData(FALSE);
strOut = strIn;
// strOut有可能是多个全路径文件名用';'连接
// 需要拆成具体的多个文件来判断
CStringSplit(strOut, _T(';'), strAry);
len = strAry.GetSize();
for (i = 0; i < len; i++)
{
str = strAry[i];
if (!file.IsFileExist(str)) {
str_msg.Format(_T("文件[%s]不存在"), str);
add_tip(str_msg);
return false;
}
}
return (!strOut.IsEmpty());
}