我正在努力完成作业,这是自今天下午以来我无法弄清楚的最后一件事。如何从一个字符串中获取两个数字并将其转换为一个变量中的int?
例如说我有这样ABCD24EFG
数组中的字符串,我想在我初始化哪种类型int
我可以用一个单号做到这一点,将其转换像一个变量数24
这
number_holder = array_name[4] - '0';
,我将让你在number_holder
2
,但我怎么能得到整个像24
并将它们转换为int
类型?
我正在努力完成作业,这是自今天下午以来我无法弄清楚的最后一件事。如何从一个字符串中获取两个数字并将其转换为一个变量中的int?
例如说我有这样ABCD24EFG
数组中的字符串,我想在我初始化哪种类型int
我可以用一个单号做到这一点,将其转换像一个变量数24
这
number_holder = array_name[4] - '0';
,我将让你在number_holder
2
,但我怎么能得到整个像24
并将它们转换为int
类型?
你可以使用这个逻辑。
number_holder=array_name[4] - '0';
number_holder=number_holder*10 + (array_name[5] - '0');
这种方式,您还可以处理像ABCD243EFG,ABCD2433EFG数组值...
的整数0-9 ASCII值48 - 57 ..所以用这个阵列中找到整数。
number_holder=0;
For (int i=0;i<arraylength;i++)
{
if(array[i]<58 && array[i]>47)
number_holder=number_holder*10+array[i] - '0';
}
您将在number_holder中获得结果。
这可以使用非'24'吗?比如说'ABC10DEFG'会起作用吗? – Ali
当然它会工作! – ScarCode
@vikiiii:只要你记得每个额外的数字从1到数十到数百等,它将工作更多的数字。 – Blastfurnace
尝试
number_holder_1 = array_name[4] - '0';
number_holder_2 = array_name[5] - '0';
你会得到两个数字。 并执行
number = number_holder_1 * 10 + number_holder_2 ;
如果该号码不能是2个位数,那么你可以使用一个for循环来获得所需要的数量。
您可以使用著名的算法
n = 0
while (char = nextchar()) {
n = n*10 + digit(char)
}
伪语言
如果你能找到一个字符串一个号码,你试图展望字符串中的下一个位置,并检查是否那也是一个数字? – Eric
@Eric我有if语句来执行检查是否是数字。 – Ali
用for循环中的运行索引替换4。顺便说一句:每个变量都是一个持有者的形式,所以命名其中一个_holder并没有多大帮助。 'array_'也是如此,它只会阻碍重构,如果你碰巧喜欢一个向量。 –