VC++中,类型为LPSTR字符串的处理有关问题

VC++中,类型为LPSTR字符串的处理问题?
在函数中生成明了一个LPSTR   字符串(例如:ABC-3D3),
如何把这个字符串按 "- "分开,
并且把里面的字母按A=0,B=1,C=2,D=3这个的规则转换为数字,
最后把所有这六位数字相加求和?

------解决方案--------------------
用CString类都可以解决。
------解决方案--------------------
写的不好!请多指教
int GetChar( char cStr);
int CharToNum( char cStr);
int GetProcess( LPSTR cDataInput, LPSTR cSplitFlag);


int CTTADlg::GetProcess( LPSTR cDataInput, LPSTR cSplitFlag)
{
char *cTempStr = new char[1024];
char *cRetStr = " ";
int lnAllCount = 0;

_tcscpy(cTempStr,cDataInput);
cRetStr = _tcstok( cTempStr, cSplitFlag );
while( cRetStr != NULL )
{
for( int iSum = 0; iSum < (int)strlen(cRetStr); iSum++)
{
int iTemp = GetChar(cRetStr[iSum]);
if( iTemp != -1)
{
lnAllCount += iTemp;
}
else
{
int iTemp2 = CharToNum(cRetStr[iSum]);
if ( iTemp2 != -1)
{
lnAllCount += iTemp2;
iTemp2 = 0;
}
}
}
cRetStr = _tcstok( NULL, cSplitFlag );
}
delete[] cTempStr;
cTempStr = NULL;

return lnAllCount;
}
int CTTADlg::GetChar( char cStr)
{
if ( cStr > = 0x41 && cStr <= 0x5A)
{
return CharToNum((int)(cStr) - 0x11);
}
else if( cStr > = 0x61 && cStr <= 0x7A)
{
return CharToNum((int)(cStr) - 0x17);
}
else
{
return -1;
}
}

int CTTADlg::CharToNum( char cStr)
{
if ( cStr > = 0x30 && cStr <= 0x39)
{
return (int)(cStr) - 0x30;
}
else
{
return -1;
}
}


//使用TEST
LPSTR cDataInput = "ABC-3D3 ";
LPSTR cSplitFlag = "- ";
int iOut = GetProcess(cDataInput, cSplitFlag);
CString aa;
aa.Format(_T( "%d "),iOut);
AfxMessageBox(aa);
//aa = 12