2012-05-17 89 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) 
} 

僞語言

相關問題