如何将char a [0]转换为int b [0],其中b是一个空的动态分配的int数组
我试过了
char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0];
int temp2 = temp - 0;
b[0] = temp2;
我想要4但是它给了我ascii值52
也在做
a[0] = atoi(temp);
给了我 错误:从'char'到'const char *'的无效转换 初始化'int atoi(const char *)'
的参数1答案 0 :(得分:25)
你需要这样做:
int temp2 = temp - '0';
代替。
答案 1 :(得分:1)
atoi()版本无效,因为atoi()对字符串而不是单个字符进行操作。所以这会奏效:
char a[] = "4";
b[0] = atoi(a);
请注意,您可能会这样做: 的atoi(安培;温度) 但这不起作用,因为& temp没有指向以null结尾的字符串。
答案 2 :(得分:0)
您可以替换整个序列:
char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0];
int temp2 = temp - 0;
b[0] = temp2;
更简单:
char a[] = "4x^0";
int b = new int[10];
b[0] = a[0] - '0';
根本不需要弄乱临时变量。您需要使用'0'
而不是0
的原因是因为前者是字符'0',其值为48,而不是值< / em> 0。