0

我写的这段代码看起来不错,但输出总是 0 可能是什么问题?我只是在编写一个代码来从 x 数字系统转换为十进制。

    #include <string>
    #include <iostream>
    using namespace std;

int main() {

string str;
long szam = 0, Dec, num, Base = 1, x,i=1;
cout << "the number : ";
cin >> str;
cout << "The input number system:";
cin >> x;

   while (str[i] == '\0')
     {
       if (str[i] = 'A') { num = 10;}
       else if (str[i] = 'B') { num = 11; }
       else if (str[i] = 'C') { num = 12; }
       else if (str[i] = 'D') { num = 13; }
       else if (str[i] = 'E') { num = 14; }
       else if (str[i] = 'F') { num = 15; }
       else { num = str[i] - '0'; }

       Dec = Dec + num * Base;
       Base = Base * x;

      }
cout << szam << endl;
return 0;

}

如果 x 小于 10 它很容易,但由于数字的字母使用,我无法处理 10+ 系统。

4

2 回答 2

0
  1. i应该从 0 开始,而不是从 1 开始。

  2. i应该在你的循环中递增。就目前而言,i它永远不会增加,所以它总是具有 的值1,所以你只看到str[1]

  3. 您的循环应该继续 while str[i] != '\0',而不是while str[i] == '\0'

  4. 您可能要考虑处理字母ABCDEF和字母的大小写abcdef

于 2016-10-01T08:08:34.650 回答
-1

您应该使用std::stol来满足您的需要。

于 2016-10-01T08:21:46.140 回答