将单个char转换为int

时间:2009-11-26 00:18:09

标签: c++ char int

如何将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

3 个答案:

答案 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。