解題筆記(11) 字串轉換為整數

2021-05-26 21:57:24 字數 1065 閱讀 6826

問題描述:輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串"345",則輸出整數345。

思路:轉換的過程比較簡單,每次讀入乙個字元,將之前儲存的值乘以10,然後再加上這個字元表示的數字。這是正常情況。這個問題主要是考察各種不正常情況的處理。假設函式的宣告為 int strtoint(const char *str);

(1)輸入的字串指標為空;

(2)數字前面有正負號的處理;

(3)字串表示的數字超過了32位整數能表示的範圍,即溢位處理;

(4)輸入了非法字元,即除了數字及正負號的其他字元;

(5)以字元' 0 '開始的串,' 0 '後面還跟了其他字元,也是非法的。

如果能很好的處理這些情況,那麼程式的健壯性大大增強。其中有兩種情況處理起來有點麻煩,第一,如何處理溢位,我們可以使用std::numeric_limits::max(),可以定義乙個long long的變數,然後與這個最大值相比,從而判斷是否溢位了。第二。由於返回值為乙個整型數,那麼如果轉換失敗,返回什麼呢?如果是'0 ' ,那麼就無法區分正常輸入"0"的情況。兩種方案,修改函式宣告,通過返回值表明轉換的成功與否,或者定義乙個全域性變數,用來儲存轉換的成功與否。參考**中使用了第二種方案。

參考**:先給出的是std::numeric_limits::max()的用法。

#include #include //需包含這個標頭檔案

using namespace std;

int main()

bool strtointok; //全域性的變數  

int strtoint(const char *str)

long long result = 0; //轉換的結果

while(str[i] != '\0')

else //正溢位

} else

} strtointok = true;

//結果返回 需強制轉換一下

return minus? (int)(-result):(int)result;

}

字串轉換為整數

class program catch exception ee console.read 轉換類 public class strconverter bool positive true int32 result 0 double tempresult 0 int start 0 while st...

字串轉換為整數

題目 輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數345。分析 這道題儘管不是很難,學過c c 語言一般都能實現基本功能,但不同程式設計師就這道題寫出的 有很大區別,可以說這道題能夠很好地反應出程式設計師的思維和程式設計習慣,因此已經被包括微軟在內的多家公司用作...

字串轉換為整數

字串轉換為整數需要考慮很多種情況,如下 第一種情況 空指標 第二種情況 空字串 第三種情況 空白字元 第四種情況 中間有字母的 int main atoi 函式遇見a就自動停下來了,輸出123 第五種情況 前面有符號的 int main 輸出 12345 第六種情況 前面有空格 int main 輸...