C&C++標準庫

來源:互聯網
上載者:User

http://blog.csdn.net/ruglcc/article/details/7921081

1.什麼是C&C++的標準庫?
C語言被發明出來時並沒有什麼庫函數,隨著C語言的流行,越來越多的廠商或者機構組織開始提供C的編譯器,並且同時把經常用到的函數封裝成“庫”的形式發布;不同的組織發布的庫函數的介面和數量各不相同。後來,標準化組織ANSI制定了C語言的標準,同時也制定了一定數量的庫(或庫函數),就就成為標準庫函數。(後來這個ANSI C標準上升為ISO標準,但是內容並沒有變化!誰讓美國是老大來著,而且C的源產地就是美國)。

C不具有物件導向的特點,對C語言擴充後就產生了C++語言;當然,像ISO這樣的標準組織也要為其制定標準呀,於是相應的繼承了C語言的基礎上也出現了C++的標準庫。
有兩點需要注意:
1.C++的標準庫不僅僅是C標準庫的繼承,還擴充了不少庫函數。(C標準庫中大約對應十幾個標頭檔,而C++中有50多個。)
2.C語言中的庫的標頭檔可以直接應用於C++的來源程式中(如使用#include<math.h>);然而今年出來的C++標準草案(基本上就是最終版了,哎,等了好久)的新規定不在使用上述方式,而是使用C++新的方法,即#include<cmath>;就是“加頭去尾”。
2.C標準庫有哪些?
它們分別對應一些標頭檔:

[cpp] view plaincopy

  1. assert.h;  
  2. ctype.h;  
  3. error.h;  
  4. float.h;  
  5. limits.h;  
  6. locate.h;  
  7. math.h;  
  8. setjmp.h;  
  9. signal.h;  
  10. stdarg.h;  
  11. stddef.h;  
  12. stdio.h;  
  13. stdlib.h;  
  14. string.h;  
  15. time.h  

共十五個標頭檔。
3.C++標準庫有哪些?

C++標準庫的所有標頭檔都沒有副檔名(#include<cmath>);在C++中還可以使用name.h形式的標準C庫標頭檔名(不建議這樣使用,今年的新標準!!!)
C++標準庫的內容總共在50個標準標頭檔中定義,其中18個提供了C庫的功能。 <cname>形式的標準標頭檔【 <complex>例外】其內容與ISO標準C包含的name.h標頭檔相同,但容納了C++擴充的功能。在 <cname>形式標準的標頭檔中,與“宏”相關的名稱在全域範圍中定義,其他名稱在std命名空間中聲明。

C++標準庫的內容分為10類:
1. 語言支援 2.輸入/輸出 3. 診斷 4. .一般工具 5.字串
6. 容器 7. 迭代器支援 8. 演算法 9. 數值操作 10.本地化

1. 標準庫中與語言支援功能相關的標頭檔 
<cstddef> 定義宏NULL和offsetof,以及其他標準類型size_t和ptrdiff_t。與對應的標準C標頭檔的區別是,NULL是C++null 指標常量的補充定義,宏offsetof接受結構或者等位型別參數,只要他們沒有成員指標類型的非靜態成員即可。
<limits> 提供與基礎資料型別 (Elementary Data Type)相關的定義。例如,對於每個數值資料類型,它定義了可以表示出來的最大值和最小值以及位元字的位元。
<climits> 提供與基本整數資料類型相關的C樣式定義。這些資訊的C++樣式定義在 <limits>中
<cfloat> 提供與基本浮點型資料類型相關的C樣式定義。這些資訊的C++樣式定義在 <limits>中
<cstdlib> 提供支援程式啟動和終止的宏和函數。這個標頭檔還聲明了許多其他雜項函數,例如搜尋和排序函數,從字串轉換為數值等函數。它與對應的標準C標頭檔stdlib.h不同,定義了abort(void)。abort()函數還有額外的功能,它不為靜態或自動對象調用解構函式,也不調用傳給atexit()函數的函數。它還定義了exit()函數的額外功能,可以釋放靜態對象,以註冊的逆序調用用atexit()註冊的函數。清除並關閉所有開啟的C流,把控制權返回給主機環境。
<new> 支援動態記憶體分配
<typeinfo> 支援變數在運行期間的類型標識
<exception> 支援異常處理,這是處理常式中可能發生的錯誤的一種方式
<cstdarg> 支援接受數量可變的參數的函數。即在調用函數時,可以給函數傳送數量不等的資料項目。它定義了宏va_arg、va_end、va_start以及va_list類型
<csetjmp> 為C樣式的非本地跳躍提供函數。這些函數在C++中不常用
<csignal> 為中斷處理提供C樣式支援

2. 支援流輸入/輸出的標頭檔 
< iostream> 支援標準流cin、cout、cerr和clog的輸入和輸出,它還支援多位元組字元標準流wcin、wcout、wcerr和wclog。
<iomanip> 提供操縱程式,允許改變流的狀態,從而改變輸出的格式。
<ios> 定義iostream的基類
<istream> 為管理輸出資料流緩衝區的輸入定義模板類
<ostream> 為管理輸出資料流緩衝區的輸出定義模板類
<sstream> 支援字串的流輸入輸出
<fstream> 支援檔案的流輸入輸出
<iosfwd> 為輸入輸出對象提供向前的聲明
<streambuf> 支援流輸入和輸出的緩衝
<cstdio> 為標準流提供C樣式的輸入和輸出
<cwchar> 支援多位元組字元的C樣式輸入輸出

3. 與診斷功能相關的標頭檔
<stdexcept> 定義標準異常。異常是處理錯誤的方式
<cassert> 定義斷言宏,用於檢查運行期間的情形
<cerrno> 支援C樣式的錯誤資訊

4. 定義工具函數的標頭檔
<utility> 定義重載的關係運算子,簡化關係運算子的寫入,它還定義了pair類型,該類型是一種模板類型,可以儲存一對值。這些功能在庫的其他地方使用
<functional>定義了許多函數物件類型和支援函數對象的功能,函數對象是支援operator()()函數調用運算子的任意對象
<memory> 給容器、管理記憶體的函數和auto_ptr模板類定義標準記憶體 Clerk
<ctime> 支援系統時鐘函數

5. 支援字串處理的標頭檔

<string> 為字串類型提供支援和定義,包括單位元組字串(由char組成)的string和多位元組字串(由wchar_t組成)

<cctype> 單位元組字元類別

<cwctype> 多位元組字元類別

<cstring> 為處理非空位元組序列和記憶體塊提供函數。這不同於對應的標準C庫標頭檔,幾個C樣式字串的一般C庫函數被傳回值為const和非

const的函數對替代了

<cwchar> 為處理、執行I/O和轉換多位元組字元序列提供函數,這不同於對應的標準C庫標頭檔,幾個多位元組C樣式字串操作的一般C庫函數被

傳回值為const和非const的函數對替代了。

<cstdlib> 為把單位元組字串轉換為數值、在多位元組字元和多位元組字串之間轉換提供函數

6. 定義容器類的模板的標頭檔 
<vector> 定義vector序列模板,這是一個大小可以重新設定的數群組類型,比普通數組更安全、更靈活
<list> 定義list序列模板,這是一個序列的鏈表,常常在任意位置插入和刪除元素
<deque> 定義deque序列模板,支援在開始和結尾的高效插入和刪除操作
<queue> 為隊列(先進先出)資料結構定義序列適配器queue和priority_queue
<stack> 為堆棧(後進先出)資料結構定義序列適配器stack
<map> map是一個關聯容器類型,允許根據索引值是唯一的,且按照升序儲存。multimap類似於map,但鍵不是唯一的。
<set> set是一個關聯容器類型,用於以升序方式儲存唯一值。multiset類似於set,但是值不必是唯一的。
<bitset> 為固定長度的位序列定義bitset模板,它可以看作固定長度的緊湊型bool數組

7. 支援迭代器的標頭檔 

<iterator> 給迭代器提供定義和支援

8. 有關演算法的標頭檔 
<algorithm> 提供一組基於演算法的函數,包括置換、排序、合并和搜尋
<cstdlib> 聲明C標準庫函數bsearch()和qsort(),進行搜尋和排序
<ciso646> 允許在代碼中使用and代替&&

9. 有關數值操作的標頭檔 
<complex> 支援複雜數值的定義和操作
<valarray> 支援數值向量的操作
<numeric> 在數值序列上定義一組一般數學操作,例如accumulate和inner_product
<cmath> 這是C數學庫,其中還附加了重載函數,以支援C++約定
<cstdlib> 提供的函數可以提取整數的絕對值,對整數進行取餘數操作

10. 有關本地化的標頭檔 

<locale> 提供的本地化包括字元類別、排序序列以及貨幣和日期表示。
<clocale> 對本地化提供C樣式支援

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.