将单个 char 转换为 int

发布于 2024-08-12 03:14:11 字数 357 浏览 7 评论 0 原文

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

How can I convert char a[0] into int b[0] where b is a empty dynamically allocated int array

I have tried

char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0]; 
int temp2 = temp - 0;
b[0] = temp2;

I want 4 but it gives me ascii value 52

Also doing

a[0] = atoi(temp);

gives me
error: invalid conversion from ‘char’ to ‘const char*’
initializing argument 1 of ‘int atoi(const char*)’

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

∞觅青森が 2024-08-19 03:14:11

你需要做的是:

int temp2 = temp - '0';

相反。

You need to do:

int temp2 = temp - '0';

instead.

冰火雁神 2024-08-19 03:14:11

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

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

请注意,您可能会想做:
atoi(&temp)
但这是行不通的,因为 &temp 不指向以 null 结尾的字符串。

The atoi() version isn't working because atoi() operates on strings, not individual characters. So this would work:

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

Note that you may be tempted to do:
atoi(&temp)
but this would not work, as &temp doesn't point to a null-terminated string.

悲歌长辞 2024-08-19 03:14:11

替换整个序列:

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。

You can replace the whole sequence:

char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0]; 
int temp2 = temp - 0;
b[0] = temp2;

with the simpler:

char a[] = "4x^0";
int b = new int[10];
b[0] = a[0] - '0';

No need at all to mess about with temporary variables. The reason you need to use '0' instead of 0 is because the former is the character '0' which has a value of 48, rather than the value 0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文