赋值是:将一个数字保存在一个字符串中,然后从一个字符串转换为一个整数 - >将该数字转换为用户输入的N-base的十进制数。
#include <iostream>
using namespace std;
int main()
{
string snum;
int n=0, base, res;
cout << "enter n: ";
cin >> snum;
cout << "enter base: ";
cin << base; //THIS IS LINE 13
for (int i=0; i<snum.length(); i++) // des order
{
int digit = snum.at(i) - '0';
n = (n*1) + digit;
if (
base <= 10
) res = base * n;
cout << "n is " << res << endl;
}
}
我得到错误:签名和未签名的整数表达式之间没有匹配[第13行]
所有!!
*如果您发现逻辑上有任何问题,请告诉我们! *使用代码块
答案 0 :(得分:1)
与
cin << base; //THIS IS LINE 13
你的意思是
cin >> base;
编辑:
你应该以不同的方式转换数字,而不是抓取每个字符取整个字符串并将其转换为数字。您可以使用流或仅使用atoi(sum.c_str())来获取整数。
之后将值转换为您想要的任何基数。
e.g。
snum=12 (converted to integer from input string)
base=8
12 - 8 (>8, number of times you can subtract) --> 1
4 - 8 (<8 use remainder) --> 4
output == 14