2012-05-17 60 views
0

我正在努力完成作业,这是自今天下午以来我无法弄清楚的最后一件事。如何从一个字符串中获取两个数字并将其转换为一个变量中的int?

例如说我有这样ABCD24EFG数组中的字符串,我想在我初始化哪种类型int

我可以用一个单号做到这一点,将其转换像一个变量数24

number_holder = array_name[4] - '0'; 

,我将让你在number_holder2,但我怎么能得到整个像24并将它们转换为int类型?

+0

如果你能找到一个字符串一个号码,你试图展望字符串中的下一个位置,并检查是否那也是一个数字? – Eric

+0

@Eric我有if语句来执行检查是否是数字。 – Ali

+0

用for循环中的运行索引替换4。顺便说一句:每个变量都是一个持有者的形式,所以命名其中一个_holder并没有多大帮助。 'array_'也是如此,它只会阻碍重构,如果你碰巧喜欢一个向量。 –

回答

1

你可以使用这个逻辑。

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中获得结果。

+0

这可以使用非'24'吗?比如说'ABC10DEFG'会起作用吗? – Ali

+0

当然它会工作! – ScarCode

+1

@vikiiii:只要你记得每个额外的数字从1到数十到数百等,它将工作更多的数字。 – Blastfurnace

1

尝试

number_holder_1 = array_name[4] - '0'; 
    number_holder_2 = array_name[5] - '0'; 

你会得到两个数字。 并执行

number = number_holder_1 * 10 + number_holder_2 ; 

如果该号码不能是2个位数,那么你可以使用一个for循环来获得所需要的数量。

3

您可以使用著名的算法

n = 0 
while (char = nextchar()) { 
    n = n*10 + digit(char) 
} 

伪语言

相关问题