如何在 C 中將字串轉換為整數並處理轉換錯誤?
Nov 04, 2024 pm 10:49 PM在C 中使用布林失敗將字串轉換為整數
問題:
在C 中將字串轉換為整數通常會出現以下情況處理無效轉換的問題。這就需要一種有效的方法來執行此類轉換,並且能夠指示失敗。
解決方案:Boost 的 Lexical Cast
Boost 的 lexical_cast 函式庫提供了一個強大的解決方案安全的字串到整數的轉換。遇到無效轉換時會拋出異常:
<code class="cpp">#include <boost/lexical_cast.hpp> try { int i = boost::lexical_cast<int>(s); // Success handling } catch(...) { // Failure handling }</code>
登入後複製
沒有Boost 的替代方案:標準流和異常
如果Boost 不可用,您可以使用標準輸入/有例外的輸出流操作:
<code class="cpp">#include <iostream> #include <sstream> #include <string> try { std::stringstream ss(s); int i; if ((ss >> i).fail() || !(ss >> std::ws).eof()) throw std::bad_cast(); // Success handling } catch(...) { // Failure handling }</code>
登入後複製
偽造Boost 的Lexical Cast(可選)
您可以在不使用Boost 的情況下建立lexical_cast的自訂版本:
<code class="cpp">template <typename T> T lexical_cast(const std::string& s) { std::stringstream ss(s); T result; if ((ss >> result).fail() || !(ss >> std::ws).eof()) throw std::bad_cast(); return result; }</code>
登入後複製
無拋出版本(可選)
對於無拋出版本,處理lexical_cast 函數中的例外:
<code class="cpp">template <typename T> bool lexical_cast(const std::string& s, T& t) { try { t = lexical_cast<T>(s); return true; } catch (const std::bad_cast& e) { return false; } }</code>
登入後複製
以上是如何在 C 中將字串轉換為整數並處理轉換錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)