2007/6/20
一个VC++读取csv文件的函数
CStringArray* CCollectDoc::DevideStr(CString ItemFieldStr,char divider)
/*将一个有多个项目组成的字符串分解为单独的项目
比如来自一条记录的内容 ItemFieldStr="I1,I2,I4";每个项目间的分割字符 divider 为','
则函数最终得到的是由单独的项目"I1" "I2" "I4"组成的字符串数组CStringArray
*/
{
CStringArray *SingleItemArray=new CStringArray ;//由每个单独项目组成的数组
//CStringArray *tempArray=new CStringArray ;//临时字符串数组
CString SingleItem;//临时存放每个单独项目
//寻找分割字符(串)divider 的总个数
int dividerPos,dividerSum=0;
dividerPos=ItemFieldStr.Find(divider,0);
while(dividerPos>=0)
{
dividerSum++;
//dividerPos=ItemFieldStr.Right(ItemFieldStr.GetLength()-dividerPos-1).Find(divider,0);
dividerPos=ItemFieldStr.Find(divider,dividerPos+1);
}
//寻找分割字符(串)divider 的总个数
for (int i=0;i<=dividerSum;i++)
{
AfxExtractSubString(SingleItem, ItemFieldStr, i, divider);//析出第i个子串
SingleItemArray->Add(SingleItem);//将每个项目字符串压入字符串数组
}
// 将 SingleItemArray 升序排序
int nSingleItemArraySize=SingleItemArray->GetSize();
QuickSortStrArray(SingleItemArray,0,nSingleItemArraySize-1);
//将SingleItemArray升序排序
return SingleItemArray;
/*验证 CCollectDoc::DevideStr 函数
//CStringArray* CCollectDoc::DevideStr(CString ItemFieldStr,char divider)
CStringArray* tempStringArray;
CString ItemFieldStr="I4,I2,I5,I1";
char divider=',';
tempStringArray=m_pDoc->DevideStr(ItemFieldStr,divider);
MessageBox(tempStringArray->GetAt(0));
MessageBox(tempStringArray->GetAt(1));
MessageBox(tempStringArray->GetAt(2));
MessageBox(tempStringArray->GetAt(3));
*///验证 CCollectDoc::DevideStr 函数
}
/*将一个有多个项目组成的字符串分解为单独的项目
比如来自一条记录的内容 ItemFieldStr="I1,I2,I4";每个项目间的分割字符 divider 为','
则函数最终得到的是由单独的项目"I1" "I2" "I4"组成的字符串数组CStringArray
*/
{
CStringArray *SingleItemArray=new CStringArray ;//由每个单独项目组成的数组
//CStringArray *tempArray=new CStringArray ;//临时字符串数组
CString SingleItem;//临时存放每个单独项目
//寻找分割字符(串)divider 的总个数
int dividerPos,dividerSum=0;
dividerPos=ItemFieldStr.Find(divider,0);
while(dividerPos>=0)
{
dividerSum++;
//dividerPos=ItemFieldStr.Right(ItemFieldStr.GetLength()-dividerPos-1).Find(divider,0);
dividerPos=ItemFieldStr.Find(divider,dividerPos+1);
}
//寻找分割字符(串)divider 的总个数
for (int i=0;i<=dividerSum;i++)
{
AfxExtractSubString(SingleItem, ItemFieldStr, i, divider);//析出第i个子串
SingleItemArray->Add(SingleItem);//将每个项目字符串压入字符串数组
}
// 将 SingleItemArray 升序排序
int nSingleItemArraySize=SingleItemArray->GetSize();
QuickSortStrArray(SingleItemArray,0,nSingleItemArraySize-1);
//将SingleItemArray升序排序
return SingleItemArray;
/*验证 CCollectDoc::DevideStr 函数
//CStringArray* CCollectDoc::DevideStr(CString ItemFieldStr,char divider)
CStringArray* tempStringArray;
CString ItemFieldStr="I4,I2,I5,I1";
char divider=',';
tempStringArray=m_pDoc->DevideStr(ItemFieldStr,divider);
MessageBox(tempStringArray->GetAt(0));
MessageBox(tempStringArray->GetAt(1));
MessageBox(tempStringArray->GetAt(2));
MessageBox(tempStringArray->GetAt(3));
*///验证 CCollectDoc::DevideStr 函数
}