C++的一种思路比较清晰的解法

#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
int main()
{
    int n=0,i=0;
    int temp=0,sum=0;
    char* arr = new char[20];       //要给‘\0’留一位
    while(cin.getline(arr,20))
    {
        n = strlen(arr);               //计算字符串长度
        
     for (i= 2;arr[i]!='\0';i++)         //最后一位是'\0',不用算进去
     {
         switch (arr[i])
         {
         case 'A': temp = 10; break;//字符转整形
         case 'B': temp = 11; break;
         case 'C': temp = 12; break;
         case 'D': temp = 13; break;
         case 'E': temp = 14; break;
         case 'F': temp = 15; break;
         default: temp = arr[i]-'0'; break;
         }
       sum = sum + temp * pow(16, n - 1- i);//从16进制的高位转化为10进制的公式
     }
        cout << sum <<endl;
        sum=0;//输出后清零
    }
    
     return 0;
}