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

解决方案 »

  1.   

    写的不好!请多指教
    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