C++使用boost::lexical_cast進行數(shù)值轉換
在STL庫中,我們可以通過stringstream來實現(xiàn)字符串和數(shù)字間的轉換:
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ù)值轉換:
int i = boost::lexical_cast<int>("123");
double d = boost::lexical_cast<double>("12.3");對于非法的轉換,則會拋異常:
try
{
int i = boost::lexical_cast<int>("12.3");
}
catch (boost::bad_lexical_cast& e)
{
cout << e.what() << endl;
}對于16機制數(shù)字的轉換,可以以如下方式進行:
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");
}到此這篇關于C++使用boost::lexical_cast進行數(shù)值轉換的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C++ 數(shù)據(jù)類型強制轉化的實現(xiàn)
這篇文章主要介紹了C++ 數(shù)據(jù)類型強制轉化的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
C語言庫函數(shù)qsort及bsearch快速排序算法使用解析
這篇文章主要為大家介紹了C語言庫函數(shù)qsort及bsearch快速排序算法的使用示例解析2022-02-02
C語言 TerminateProcess函數(shù)案例詳解
這篇文章主要介紹了C語言 TerminateProcess函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08

