C++使用boost::lexical_cast進(jìn)行數(shù)值轉(zhuǎn)換
在STL庫中,我們可以通過stringstream來實現(xiàn)字符串和數(shù)字間的轉(zhuǎn)換:
int i = 0; stringstream ss; ss << "123"; ss >> i;
但stringstream是沒有錯誤檢查的功能,例如對如如下代碼,會將i給賦值為12.
ss << "12.3"; ss >> i;
甚至連這樣的代碼都能正常運行:
ss << "hello world"; ss >> i;
這顯然不是我們所想要看到的。為了解決這一問題,可以通過boost::lexical_cast來實現(xiàn)數(shù)值轉(zhuǎn)換:
int i = boost::lexical_cast<int>("123"); double d = boost::lexical_cast<double>("12.3");
對于非法的轉(zhuǎn)換,則會拋異常:
try { int i = boost::lexical_cast<int>("12.3"); } catch (boost::bad_lexical_cast& e) { cout << e.what() << endl; }
對于16機(jī)制數(shù)字的轉(zhuǎn)換,可以以如下方式進(jìn)行:
template <typename ElemT> struct HexTo { ElemT value; operator ElemT() const {return value;} friend std::istream& operator>>(std::istream& in, HexTo& out) { in >> std::hex >> out.value; return in; } }; int main(void) { int x = boost::lexical_cast<HexTo<int>>("0x10"); }
到此這篇關(guān)于C++使用boost::lexical_cast進(jìn)行數(shù)值轉(zhuǎn)換的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C++強制類型轉(zhuǎn)換(static_cast、dynamic_cast、const_cast、reinterpret_cast)
- c++中的const_cast用法大全
- 解析C++編程中的bad_cast異常
- C++中的類型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié)
- c++ dynamic_cast與static_cast使用方法示例
- C++中4種類型轉(zhuǎn)換方式 cast操作詳解
- C++ 中dynamic_cast<>的使用方法小結(jié)
- C++四種cast使用詳細(xì)介紹
相關(guān)文章
C++ 數(shù)據(jù)類型強制轉(zhuǎn)化的實現(xiàn)
這篇文章主要介紹了C++ 數(shù)據(jù)類型強制轉(zhuǎn)化的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Linux/C++多線程實例學(xué)習(xí)十字路口車輛調(diào)度
這篇文章主要為大家介紹了Linux/C++多線程實例學(xué)習(xí)十字路口車輛調(diào)度示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05C語言庫函數(shù)qsort及bsearch快速排序算法使用解析
這篇文章主要為大家介紹了C語言庫函數(shù)qsort及bsearch快速排序算法的使用示例解析2022-02-02C語言 TerminateProcess函數(shù)案例詳解
這篇文章主要介紹了C語言 TerminateProcess函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08