C++ 解析數(shù)字

2023-03-20 16:51 更新

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

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

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是累加器的一個(gè)例子。累加器和我們?cè)诘?.9節(jié)見(jiàn)過(guò)的計(jì)數(shù)器比較相似,不過(guò)計(jì)數(shù)器是不斷地增加值,而累加器是每次以字符串連接的方式增加一個(gè)字符。

表達(dá)式

digitString += s[i];

等價(jià)于表達(dá)式

digitString = digitString + s[i];

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

因?yàn)閍toi以一個(gè)C字符串作為參數(shù),所以我們必須先把digitString轉(zhuǎn)化為C字符串,然后才能將其作為atoi的參數(shù)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)