C++ 解析數(shù)字

2023-03-20 16:51 更新

下一個任務是把文件中的數(shù)字從字符串形式轉換為整型數(shù)。在書寫較大的數(shù)字時,人們往往會用逗號將數(shù)字分組,如1,750。而計算機處理數(shù)字時,絕大部分情況是不包括逗號的,而且內置的讀取數(shù)字的函數(shù)通常不能處理逗號。這就增加了轉換的困難,不過也給了我們一個機會來編寫去掉逗號的函數(shù),所以這也沒什么。去掉逗號之后,我們就可以使用庫函數(shù)atoi將字符串轉換為整型數(shù)了。atoi在頭文件stdlib.h中定義。

要去掉逗號,一個選擇就是遍歷字符串,檢查每個字符是否是數(shù)字。如果是的話,我們就將其加入結果字符串中。在循環(huán)結束時,原始字符串中的所有數(shù)字就都按順序包含到結果字符串中了。

int convertToInt (const apstring& s)
{
  apstring digitString = "";

  for (int i=0; i<s.length(); i++) {
    if (isdigit (s[i])) {
    digitString += s[i];
    }
  }
  return atoi (digitString.c_str());
}

變量digitString是累加器的一個例子。累加器和我們在第7.9節(jié)見過的計數(shù)器比較相似,不過計數(shù)器是不斷地增加值,而累加器是每次以字符串連接的方式增加一個字符。

表達式

digitString += s[i];

等價于表達式

digitString = digitString + s[i];

兩條語句都是在現(xiàn)有字符串末尾添加一個字符。

因為atoi以一個C字符串作為參數(shù),所以我們必須先把digitString轉化為C字符串,然后才能將其作為atoi的參數(shù)。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號