9

如何将 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(con​​st char*)'的参数1</p>

4

3 回答 3

25

你需要做:

int temp2 = temp - '0';

反而。

于 2009-11-26T00:20:16.023 回答
1

atoi() 版本不起作用,因为 atoi() 对字符串而不是单个字符进行操作。所以这会起作用:

char a[] = "4";
b[0] = atoi(a);

请注意,您可能很想这样做: atoi(&temp) 但这不起作用,因为 &temp 不指向以空字符结尾的字符串。

于 2009-11-26T00:32:02.443 回答
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,而不是0。

于 2009-11-26T01:22:58.240 回答