字符串到单个数字

Posted

技术标签:

【中文标题】字符串到单个数字【英文标题】:string to individual numbers 【发布时间】:2018-01-30 01:02:16 【问题描述】:

我遇到了一个问题,我需要将字符串的每个元素提取到一个整数数组中,该字符串只包含整数值,没有任何空格或分隔符。

这是一个例子。

char input[8]="02320000";

int output[8]=0,2,3,2,0,0,0,0;

我尝试使用atoi(),它将整个字符串作为数字。

字符串字符将是 0-3。

谢谢你

【问题讨论】:

你知道如何处理字符串中的单个字符吗? atoi() 将字符串转换为单个整数,而不是整数数组。 您不需要接受其中一个答案(请参阅***.com/help/someone-answers),但如果没有一个是令人满意的,您应该考虑解释缺少的内容。也许详细说明您对其中一个答案的评论。但请注意不要问另一个单独的问题。如果您需要回答另一个问题,请提出另一个问题,您可以链接到该问题作为背景。 【参考方案1】:
char input[8]="02320000";
int output[8];

for(int i = 0; i < 8; i++)

     output[i] = input[i] - '0';

解释 -'0' Convert a character digit to the corresponding integer in C

【讨论】:

这让我想到了字符串结束和字符数组初始化,所以我稍微玩了一下。我了解到“02320000”似乎被隐式转换为 (char [8]) 或 (char [9]),具体取决于输入是 char input[8] 还是 char input[9]。我没想到 8 和 9 的大小都能像它那样无缝地工作。对于 8,它不会终止字符串,对于 9,它会终止。当然,数组大小不能使用小于 8 的值。【参考方案2】:

嗯,你可以遍历字符串的所有字符:

char input[8]="02320000";
char output[8];

for(int = 0; i < 8; ++i)
    output[i] = input[i] - '0';

C 中的字符串只是以所谓的字符结尾的字符序列 '\0'-终止字节,其值为0。我们使用char数组来存储它们 我们使用ASCII 值作为字符。

请注意1 != '1'1 是整数,'1' 是表示 第一名。该表示的值为 49(请参阅ASCII)。如果你想计算 一个字符表示的实数,你必须使用c-'0',其中 c 是有问题的角色。这是有效的,因为在表中, 数字也按数字本身排序:'0' 是 48,'1' 是 49,'2' 是 50,等等

【讨论】:

以上是关于字符串到单个数字的主要内容,如果未能解决你的问题,请参考以下文章

数字字符串中单个字母字符的正则表达式语法

键入 N 个数字的元组,后跟单个字符串

如何使用正则表达式匹配所有数字字符和一些单个字符

匹配单个字符

OpenCV+Python实现将车牌数字分割为单个的字符图片

正则 非单个字符串,非数字下划线正则