程式設計 Boost元件lexical cast

2021-06-10 19:00:23 字數 735 閱讀 5876

原:

這次我們先挑個簡單實用的boost元件,看看boost能給我們帶來怎樣的便利。

3.1 字串→數值

在csdn論壇上經常看到詢問如何在字串型別和數值型別間進行轉換的問題,也看到了許多不同的答案。下面先討論一下從字串型別到數值型別的轉換。

如何將字串"123"轉換為int型別整數123?答案是,用標準c的庫函式atoi;

如果要轉換為long型別呢?標準c的庫函式atol;

如何將"123.12"轉換為double型別呢?標準c的庫函式atod;

如果要轉換為long double型別呢?標準c的庫函式atold;……

後來有朋友開始使用標準庫中的string類,問這個如何轉換為數值?有朋友答曰,請先轉換為const char*。我很佩服作答者有數學家的思維:把陌生的問題轉化成熟悉的問題。(曾經有一則笑話,好事者問數學家:知道如何燒水嗎?答:知道。把水壺加滿水,點火燒。又問:如果水壺裡已經有水了呢?答:先倒掉,就轉化為我熟悉的問題了……)

不,不,這樣是c的做法,不是c++。那麼,c++該怎麼做呢?使用boost conversion library所提供的函式lexical_cast(需要引入標頭檔案boost/lexical_cast.hpp)無疑是最簡單方便的。如:

#include #include int main() catch(boost::bad_lexical_cast& e)

即可得到正確結果。當然,理論上效率會有一點點損失,不過幾乎可以忽略不計。

boost併發程式設計boost atomic

三個用於併發程式設計的元件 atomic,thread,asio 用於同步和非同步io操作 atomic,封裝了不同計算機硬體的底層操作原語,提供了跨平台的原子操作功能,解決併發競爭讀寫變數的困擾。包含標頭檔案,atomic可以把對型別t的操作原子化,t的要求 1.標量型別,算數,列舉,指標 2.只...

選擇性編譯Boost元件

雖然很多boost元件都只有標頭檔案,不需要編譯,但是有些boost元件,如program options regex等還是需要編譯生成庫的。考慮到目前的程式需要用到program options regex等元件,還可能用到filesystem元件,所以還是決定先把boost編譯一下。進入tool...

Boost併發程式設計之shared mutex

shared mutex即讀寫鎖,不同與我們常用的獨佔式鎖mutex,shared mutex是共享與獨佔共存的鎖,實現了讀寫鎖的機制,即多個讀執行緒乙個寫執行緒,通常用於對於乙個共享區域的讀操作比較頻繁,而寫操作比較少的情況。讀寫鎖比起mutex具有更高的適用性,具有更高的並行性,可以有多個執行緒...