在 C++ 中將字符串轉換為 int

Google Translate Icon

這篇文章將討論如何在 C++ 中將字符串轉換為 int。

1.使用 std::stoi 功能

標準方法是使用 std::stoi 用於將字符串轉換為整數的函數。這 stoi 函數在 C++11 中引入並在頭文件中定義 <string>.它拋出 std::invalid_argument 或者 std::out_of_range 錯誤輸入或整數溢出的異常。值得注意的是,它會將字符串轉換為 10xyz 為整數 10.

下載  運行代碼

2.使用字符串流

std::stringstream 可用於轉換 std::string 到其他數據類型,反之亦然。這遇到了同樣的問題 std::stoi 確實,即,它將轉換字符串,例如 10xyz 為整數 10.它返回 INT_MAX 或者 INT_MIN 如果轉換後的值超出整數數據類型的範圍。如果字符串的值不能表示為 int,則返回 0。

下載  運行代碼

3.使用 boost::lexical_cast

另一個不錯的選擇是使用 boost::lexical_cast.它拋出 boost::bad_lexical_cast 無法構造有效整數或發生溢出時的異常。

下載代碼

4.使用 std::atoi 功能

我們也可以使用 std::atoi 將字符串轉換為 int 的函數。它需要一個 C 字符串作為參數,因此我們需要將我們的字符串轉換為 C 字符串。我們可以使用 std::string::c_str.

請注意,如果轉換後的值超出整數數據類型的範圍,則其行為未定義。如果字符串的值不能表示為 int,則返回 0。

下載  運行代碼

5.使用 sscanf() 功能

我們可以將 C 字符串傳遞給 sscanf() 函數作為參數,並將其轉換為格式說明符中指定的相應數據類型。它將返回成功時的參數總數和失敗時的 EOF。

下載  運行代碼

6.使用基於範圍的for循環

最後,天真的解決方案是實現我們自己的例程。這個想法是使用基於範圍的 for 循環 (C++11) 遍歷字符串的字符並單獨處理每個數字。如果轉換後的值超出整數數據類型的範圍,則行為未定義。

下載  運行代碼

這就是在 C++ 中將字符串轉換為 int 的全部內容。

評價這篇文章

平均評分 4.65/5。票數: 57

暫時沒有票!成為第一個給這篇文章評分的人。

很抱歉這篇文章對您沒有用處!

告訴我們如何改進這篇文章?




謝謝閱讀。

請使用我們的 在線編譯器 使用 C、C++、Java、Python、JavaScript、C#、PHP 和許多更流行的編程語言在評論中發布代碼。

像我們?將我們推薦給您的朋友,幫助我們成長。快樂編碼 :)



訂閱
通知
guest
2 註釋
投票最多
最新 最老的
內聯反饋
查看所有評論
請勿點擊此鏈接,否則您將被禁止訪問該網站!