boost之lexical_cast
第一次翻譯,雖然是個很簡單的函數介紹...
文件boost/lexical_cast.hpp中定義了此函數:
?
[cpp]?view plaincopy
第一種形式:
?
輸出流參數的結果到一個基于字符串的標準庫流中,并返回為Target對象。如果Target是 std::string或者std::wstring,則輸入流將提取字符串的全部內容,包括空格,而不是使用操作符operator>>的默認行為。如果lexical_cast轉換錯誤,將拋出bad_lexical_cast異常。
?
第二種形式:
大小為count的數組作為輸入參數,轉換返回Target對象。如果lexical_cast轉換錯誤,將拋出bad_lexical_cast異常。這種形式可能對處理非0結尾的字符串數組或字符數組的某一部分很有用。
?
要求:
1. Source必須是一個可以輸出到輸出流的類型(OutputStreamable),也就是Source類型定義了operator<<操作符:一個std::ostream或者std::wostream對象在其左邊,參數類型實例在右邊
2. Target必須是一個可以輸入到輸入流的類型(InputStreamable),也就是該類型定義了operator>>操作符
3.?Target定義了拷貝構造函數(CopyConstructible )
4. Target定義了默認構造函數(DefaultConstructible)
?
【http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast/synopsis.html#boost_lexical_cast.synopsis.lexical_cast】
?
------------------------------------------------------------------------------------------------
其他資料:
?
一、lexical_cast的作用
lexical_cast使用統一的接口實現字符串與目標類型之間的轉換。
二、lexical_cast與c/c++提供類似接口的比較
標準c家族中包含此類函數,例如atoi與itoa等,它們的缺點是:
(1)各個轉換都是單向的,雙向轉換為不同函數,各種轉換函數不同,接口眾多;
(2)僅支持基礎數據類型的子集,如int,long,double;
(3)不能提供統一的接口,易用性差;
c++中提供了stringstream,使用它進行格式轉換可讀性較差,使用起點較高,只是簡單的轉換,stringstream太重量級。
boost提供了lexical_cast,使用統一接口形式實現任意類型之間的轉換,增強了易用性。但如果需要嚴密控制精度的轉換,仍然推薦使用stringstream;數值之間的轉換,推薦使用numeric_cast。
?
三、lexical_cast的樣例
?
[cpp]?view plaincopy
【http://www.habadog.com/2011/05/07/boost-lexical_cast-intro/】
轉載于:https://www.cnblogs.com/diegodu/p/6183877.html
總結
以上是生活随笔為你收集整理的boost之lexical_cast的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法训练 出现次数最多的整数
- 下一篇: 编码:隐匿在计算机软硬件背后的语言(7)