C++使用boost::lexical_cast進(jìn)行數(shù)值轉(zhuǎn)換
在STL庫(kù)中,我們可以通過(guò)stringstream來(lái)實(shí)現(xiàn)字符串和數(shù)字間的轉(zhuǎn)換:
int i = 0;
stringstream ss;
ss << "123";
ss >> i;但stringstream是沒(méi)有錯(cuò)誤檢查的功能,例如對(duì)如如下代碼,會(huì)將i給賦值為12.
ss << "12.3";
ss >> i;甚至連這樣的代碼都能正常運(yùn)行:
ss << "hello world";
ss >> i;這顯然不是我們所想要看到的。為了解決這一問(wèn)題,可以通過(guò)boost::lexical_cast來(lái)實(shí)現(xiàn)數(shù)值轉(zhuǎn)換:
int i = boost::lexical_cast<int>("123");
double d = boost::lexical_cast<double>("12.3");對(duì)于非法的轉(zhuǎn)換,則會(huì)拋異常:
try
{
int i = boost::lexical_cast<int>("12.3");
}
catch (boost::bad_lexical_cast& e)
{
cout << e.what() << endl;
}對(duì)于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)換的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C++強(qiáng)制類(lèi)型轉(zhuǎn)換(static_cast、dynamic_cast、const_cast、reinterpret_cast)
- c++中的const_cast用法大全
- 解析C++編程中的bad_cast異常
- C++中的類(lèi)型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié)
- c++ dynamic_cast與static_cast使用方法示例
- C++中4種類(lèi)型轉(zhuǎn)換方式 cast操作詳解
- C++ 中dynamic_cast<>的使用方法小結(jié)
- C++四種cast使用詳細(xì)介紹
相關(guān)文章
C++ 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)化的實(shí)現(xiàn)
這篇文章主要介紹了C++ 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
循環(huán)隊(duì)列詳解及隊(duì)列的順序表示和實(shí)現(xiàn)
這篇文章主要介紹了循環(huán)隊(duì)列詳解及隊(duì)列的順序表示和實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2016-12-12
Linux/C++多線(xiàn)程實(shí)例學(xué)習(xí)十字路口車(chē)輛調(diào)度
這篇文章主要為大家介紹了Linux/C++多線(xiàn)程實(shí)例學(xué)習(xí)十字路口車(chē)輛調(diào)度示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
C語(yǔ)言每日練習(xí)之求兩個(gè)矩陣的乘積詳解
這篇文章主要介紹了如何求兩個(gè)矩陣的乘積,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-11-11
C和C++如何實(shí)現(xiàn)互相調(diào)用詳解
在學(xué)習(xí)c++中用到一些古老的c語(yǔ)言庫(kù)時(shí),在工作中我們經(jīng)常要使用C和C++混合編程,下面這篇文章主要給大家介紹了關(guān)于C和C++如何實(shí)現(xiàn)互相調(diào)用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
C語(yǔ)言庫(kù)函數(shù)qsort及bsearch快速排序算法使用解析
這篇文章主要為大家介紹了C語(yǔ)言庫(kù)函數(shù)qsort及bsearch快速排序算法的使用示例解析2022-02-02
C語(yǔ)言 TerminateProcess函數(shù)案例詳解
這篇文章主要介紹了C語(yǔ)言 TerminateProcess函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08

