原:
這次我們先挑個簡單實用的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具有更高的適用性,具有更高的並行性,可以有多個執行緒...