真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++語(yǔ)言學(xué)習(xí)(九)——C++標(biāo)準(zhǔn)庫(kù)簡(jiǎn)介-創(chuàng)新互聯(lián)

C++語(yǔ)言學(xué)習(xí)(九)——C++標(biāo)準(zhǔn)庫(kù)簡(jiǎn)介

一、C++標(biāo)準(zhǔn)庫(kù)簡(jiǎn)介

1、C++標(biāo)準(zhǔn)庫(kù)簡(jiǎn)介

C++標(biāo)準(zhǔn)庫(kù)(C++ Standard Library),是類庫(kù)和函數(shù)的集合。?
C++編譯器廠商根據(jù)C++標(biāo)準(zhǔn)委員會(huì)官方的ISO規(guī)范并將其轉(zhuǎn)化為代碼。C++編譯器廠商在實(shí)現(xiàn)C++標(biāo)準(zhǔn)庫(kù)過(guò)程中必須依賴其不同操作系統(tǒng)所提供的系統(tǒng)調(diào)用接口,因此每個(gè)平臺(tái)都有其自己的C++標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)。
C++標(biāo)準(zhǔn)庫(kù)的特點(diǎn)如下:
A、C++標(biāo)準(zhǔn)庫(kù)不是C++語(yǔ)言標(biāo)準(zhǔn)的一部分,由類庫(kù)和函數(shù)庫(kù)組成。
B、C++標(biāo)準(zhǔn)庫(kù)中定義的類和對(duì)象都位于std命名空間中。
C、C++標(biāo)準(zhǔn)庫(kù)的頭文件都不帶.h后綴。
D、C++標(biāo)準(zhǔn)庫(kù)涵蓋了C庫(kù)的功能。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的雁山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

2、C++編譯環(huán)境

C++編譯環(huán)境組成如下:
C++語(yǔ)言學(xué)習(xí)(九)——C++標(biāo)準(zhǔn)庫(kù)簡(jiǎn)介
C++編譯環(huán)境的組成如下:
A、不同的C++編譯器有自己不同的C++擴(kuò)展語(yǔ)法模塊
B、不同的C++編譯器有相同的C++標(biāo)準(zhǔn)語(yǔ)法模塊
C、不同的C++編譯器有自己的編譯器擴(kuò)展庫(kù)
D、為了便于軟件開發(fā),不同的C++編譯器附帶提供C語(yǔ)言兼容庫(kù),C語(yǔ)言兼容庫(kù)頭文件帶.h后綴,如#include ,#include
E、C++標(biāo)準(zhǔn)庫(kù)中包含一個(gè)涵蓋C庫(kù)功能的子庫(kù),通常頭文件以c開頭,如#include ,#include 等。
F、不同的C++編譯器都有C++編譯器廠商實(shí)現(xiàn)的遵循C++標(biāo)準(zhǔn)的C++標(biāo)準(zhǔn)庫(kù),C++標(biāo)準(zhǔn)庫(kù)有相同的功能接口,但內(nèi)部實(shí)現(xiàn)不同。

二、C++標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)

1、C++標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)簡(jiǎn)介

C++標(biāo)準(zhǔn)庫(kù)是一組C++模板類,提供了通用的編程數(shù)據(jù)結(jié)構(gòu)和函數(shù),如鏈表、堆、數(shù)組、算法、迭代器等C++組件。C ++標(biāo)準(zhǔn)庫(kù)包含了C標(biāo)準(zhǔn)庫(kù),并在C++標(biāo)準(zhǔn)中進(jìn)行了定義。
C++編譯器開發(fā)廠商根據(jù)C++標(biāo)準(zhǔn)委員會(huì)官方發(fā)布的C++ ISO規(guī)范并將其轉(zhuǎn)化為代碼。C++編譯器廠商在編譯器實(shí)現(xiàn)過(guò)程中必須依賴其操作系統(tǒng)所提供的功能(讀/寫文件,分配內(nèi)存,創(chuàng)建線程等系統(tǒng)調(diào)用),因此每個(gè)平臺(tái)都有其自己的標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)。

2、GNU/Linux版實(shí)現(xiàn)

在GNU/Linux上,C++標(biāo)準(zhǔn)庫(kù)通常由libstdc++或GNU標(biāo)準(zhǔn)C++庫(kù)項(xiàng)目實(shí)現(xiàn)。通常,所有常規(guī)的Linux發(fā)行版都默認(rèn)使用libstdc++。

3、Mac和iOS版實(shí)現(xiàn)

在OS X Mavericks(V10.9)前的Mac OS上,libstdc++是默認(rèn)C++標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)。自O(shè)S X Mavericks開始,Apple切換到使用libc++作為C++標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)。

4、Windows版實(shí)現(xiàn)

在Windows上,C++標(biāo)準(zhǔn)庫(kù)的實(shí)現(xiàn)一直嚴(yán)格限定在微軟官方的編譯器Visual Studio中。Windows上的C++標(biāo)準(zhǔn)庫(kù)通常稱為C/C++運(yùn)行時(shí)庫(kù)(CRT),涵蓋了C/C++二者的實(shí)現(xiàn)。
Windows最開始的C++標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)為CRTDLL.DLL庫(kù)。Windows 95開始,Microsoft開始將其遷移到MSVCRT [版本號(hào)]?.DLL(MSVCR20.DLL,MSVCR70.DLL等)上。?
Visual Studio 2015引入了深度的CRT重構(gòu)。C/C ++標(biāo)準(zhǔn)庫(kù)的實(shí)現(xiàn)遷移到一個(gè)新庫(kù),Universal C運(yùn)行時(shí)庫(kù) (Universal CRT或UCRT),編譯為UCRTBASE.DLL。 UCRT從Windows 10開始作為操作系統(tǒng)的一部分提供。

5、Android版實(shí)現(xiàn)

Bionic是Google為其Android操作系統(tǒng)所編寫的C標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn),直接在底層使用。第三方開發(fā)者可以通過(guò)Android原生開發(fā)工具包(NDK)訪問(wèn)Bionic,NDK可以使用C和C++代碼編寫Android應(yīng)用程序。
NDK提供了很多C++標(biāo)準(zhǔn)庫(kù)版本的實(shí)現(xiàn):
A、libc++,從Lollipop開始的官方安卓系統(tǒng)和現(xiàn)代Mac操作系統(tǒng)都將其作為C++標(biāo)準(zhǔn)庫(kù)使用。從NDK發(fā)布17版本開始,成為NDK中唯一可用的C++標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)。
B、gnustl,libstdc++的別名,在NDK發(fā)布18中刪除。
C、STLport,由STLport項(xiàng)目編寫的C++標(biāo)準(zhǔn)庫(kù)的第三方實(shí)現(xiàn),自2008年以來(lái)一直處于不活躍狀態(tài)。STLport在NDK發(fā)布18中移除。

6、其它實(shí)現(xiàn)版本

C++標(biāo)準(zhǔn)庫(kù)也有不同的實(shí)現(xiàn)版本:Apache版C++標(biāo)準(zhǔn)庫(kù),uSTL以及EASTL等等。Apache版本C++標(biāo)準(zhǔn)庫(kù)注重可移植性。

三、C++標(biāo)準(zhǔn)庫(kù)組成

1、?語(yǔ)言支持功能

:定義宏NULL和offsetof以及其它標(biāo)準(zhǔn)類型size_t和ptrdiff_t。與對(duì)應(yīng)的標(biāo)準(zhǔn)C頭文件的區(qū)別是,NULL是C++空指針常量的補(bǔ)充定義(C++11中已有關(guān)鍵字nullptr),宏offsetof接受結(jié)構(gòu)或者聯(lián)合類型參數(shù),只要沒(méi)有成員指針類型的非靜態(tài)成員即可。
:提供與基本數(shù)據(jù)類型相關(guān)的定義。例如,對(duì)于每個(gè)數(shù)值數(shù)據(jù)類型,它定義了可以表示出來(lái)的大值和最小值以及二進(jìn)制數(shù)字的位數(shù)。
:提供與基本整數(shù)數(shù)據(jù)類型相關(guān)的C樣式定義,C++樣式定義在中。
:提供與基本浮點(diǎn)型數(shù)據(jù)類型相關(guān)的C樣式定義,C++樣式定義在中。
:提供支持程序啟動(dòng)和終止的宏和函數(shù),還聲明了許多其他雜項(xiàng)函數(shù),例如搜索和排序函數(shù),從字符串轉(zhuǎn)換為數(shù)值等函數(shù)。與對(duì)應(yīng)的標(biāo)準(zhǔn)C頭文件stdlib.h不同,定義了abort(void)。abort()函數(shù)還有額外的功能,它不為靜態(tài)或自動(dòng)對(duì)象調(diào)用析構(gòu)函數(shù),也不調(diào)用傳給atexit()函數(shù)的函數(shù)。它還定義了exit()函數(shù)的額外功能,可以釋放靜態(tài)對(duì)象,以注冊(cè)的逆序調(diào)用用atexit()注冊(cè)的函數(shù)。清除并關(guān)閉所有打開的C流,把控制權(quán)返回給主機(jī)環(huán)境。
:支持動(dòng)態(tài)內(nèi)存分配。
:支持變量在運(yùn)行期間的類型標(biāo)識(shí)。
:支持異常處理,是處理程序中可能發(fā)生的錯(cuò)誤的一種方式。
:支持接受數(shù)量可變的參數(shù)的函數(shù)。即在調(diào)用函數(shù)時(shí),可以給函數(shù)傳送數(shù)量不等的數(shù)據(jù)項(xiàng)。定義了宏va_arg、va_end、va_start以及va_list類型。
:為C樣式的非本地跳躍提供函數(shù),在C++中不常用。
:為中斷處理提供C樣式支持。

2、流輸入/輸出

:支持標(biāo)準(zhǔn)流cin、cout、cerr和clog的輸入和輸出,還支持多字節(jié)字符標(biāo)準(zhǔn)流wcin、wcout、wcerr和wclog。
:提供操縱程序,允許改變流的狀態(tài),從而改變輸出的格式。
:定義iostream的基類。
:為管理輸出流緩存區(qū)的輸入定義模板類。
:為管理輸出流緩存區(qū)的輸出定義模板類。
:支持字符串的流輸入輸出。
:支持文件的流輸入輸出。
:為輸入輸出對(duì)象提供向前的聲明。
:支持流輸入和輸出的緩存。
:為標(biāo)準(zhǔn)流提供C樣式的輸入和輸出。
:支持多字節(jié)字符的C樣式輸入輸出。

3、?診斷功能

:定義標(biāo)準(zhǔn)異常。
:定義斷言宏,用于運(yùn)行時(shí)檢查。
:支持C樣式的錯(cuò)誤信息。

4、工具函數(shù)

:定義重載的關(guān)系運(yùn)算符,簡(jiǎn)化關(guān)系運(yùn)算符的寫入,還定義了pair類型,pair類型是一種模板類型,可以存儲(chǔ)一對(duì)值。
:定義了許多函數(shù)對(duì)象類型和支持函數(shù)對(duì)象的功能,函數(shù)對(duì)象是支持operator()()函數(shù)調(diào)用運(yùn)算符的任意對(duì)象。
:給容器、管理內(nèi)存的函數(shù)和auto_ptr模板類定義標(biāo)準(zhǔn)內(nèi)存分配器。
:支持系統(tǒng)時(shí)鐘函數(shù)。

5、字符串處理

:為字符串類型提供支持和定義,包括單字節(jié)字符串(由char組成)的string和多字節(jié)字符串(由wchar_t組成)。
:?jiǎn)巫止?jié)字符類別。
:多字節(jié)字符類別。
:為處理非空字節(jié)序列和內(nèi)存塊提供函數(shù)。不同于對(duì)應(yīng)的標(biāo)準(zhǔn)C庫(kù)頭文件,C樣式字符串的一般C庫(kù)函數(shù)被返回值為const和非const的函數(shù)對(duì)替代。
:為處理、執(zhí)行I/O和轉(zhuǎn)換多字節(jié)字符序列提供函數(shù),不同于對(duì)應(yīng)的標(biāo)準(zhǔn)C庫(kù)頭文件,幾個(gè)多字節(jié)C樣式字符串操作的一般C庫(kù)函數(shù)被返回值為const和非const的函數(shù)對(duì)替代。
:為把單字節(jié)字符串轉(zhuǎn)換為數(shù)值、在多字節(jié)字符和多字節(jié)字符串之間轉(zhuǎn)換提供函數(shù)。

6、容器類模板

:定義vector序列模板,是一個(gè)大小可以重新設(shè)置的數(shù)組類型,比普通數(shù)組更安全、更靈活。
:定義list序列模板,是一個(gè)序列的鏈表,常常在任意位置插入和刪除元素。
:定義deque序列模板,支持在開始和結(jié)尾的高效插入和刪除操作。
:為隊(duì)列(先進(jìn)先出)數(shù)據(jù)結(jié)構(gòu)定義序列適配器queue和priority_queue。
:為堆棧(后進(jìn)先出)數(shù)據(jù)結(jié)構(gòu)定義序列適配器stack。
:map是一個(gè)關(guān)聯(lián)容器類型,允許根據(jù)鍵值是唯一的,且按照升序存儲(chǔ)。multimap類似于map,但鍵不是唯一的。
:set是一個(gè)關(guān)聯(lián)容器類型,用于以升序方式存儲(chǔ)唯一值。multiset類似于set,但是值不必是唯一的。
:為固定長(zhǎng)度的位序列定義bitset模板,它可以看作固定長(zhǎng)度的緊湊型bool數(shù)組。
:(TR1)固定大小數(shù)組,支持復(fù)制。
:(c++11)單向列表,支持快速隨機(jī)訪問(wèn)。
:(TR1)無(wú)序容器set,其元素隨機(jī)存放。multiset類似于set,但是值不必是唯一的。
:(TR1)無(wú)序容器map,其鍵值隨機(jī)存放。multimap類似于map,但鍵不是唯一的。

7、迭代器

:給迭代器提供定義和支持。

8、算法

:提供一組基于算法的函數(shù),包括置換、排序、合并和搜索。
:聲明C標(biāo)準(zhǔn)庫(kù)函數(shù)bsearch()和qsort(),進(jìn)行搜索和排序。
:允許在代碼中使用and代替&&。

9、數(shù)值操作

:支持復(fù)雜數(shù)值的定義和操作。
:支持?jǐn)?shù)值矢量的操作。
:在數(shù)值序列上定義一組一般數(shù)學(xué)操作,例如accumulate和inner_product。
:這是C數(shù)學(xué)庫(kù),其中還附加了重載函數(shù),以支持C++約定。
:提供的函數(shù)可以提取整數(shù)的絕對(duì)值,對(duì)整數(shù)進(jìn)行取余數(shù)操作。

10、本地化

:提供的本地化包括字符類別、排序序列以及貨幣和日期表示。
:對(duì)本地化提供C樣式支持。

四、C++標(biāo)準(zhǔn)庫(kù)使用示例

1、C++標(biāo)準(zhǔn)庫(kù)使用示例

#include 
#include 

using namespace std;

int main(int argc, char *argv[])
{
    string s = "Hello, C++ Library.";
    cout << s <

上述代碼中,使用了C++標(biāo)準(zhǔn)庫(kù)中的string類和iostream流類。

2、C++標(biāo)準(zhǔn)庫(kù)的C庫(kù)子模塊使用示例

#include 
#include 

using namespace std;

int main(int argc, char *argv[])
{
    string s = "Hello, C module of C++ Library.";
    cout << s <

上述代碼中,使用了C++標(biāo)準(zhǔn)庫(kù)中的string類、iostream流類,以及C++標(biāo)準(zhǔn)庫(kù)中C庫(kù)的cmath庫(kù)。

3、C語(yǔ)言兼容庫(kù)使用示例

#include 
#include 

int main(int argc, char *argv[])
{
    const char* s = "Hello, C Compatible Library.";
    printf("%s\n", s);

    double d = sqrt(4);
    printf("%lf\n", d);
    return 0;
}

上述代碼中,使用了C兼容庫(kù)的stdio庫(kù)和math庫(kù)。

五、C++字符串類

1、C語(yǔ)言的字符串

C語(yǔ)言不支持真正意義上的字符串,但可以使用字符數(shù)組和一組函數(shù)實(shí)現(xiàn)字符串操作。C語(yǔ)言不支持自定義類型,因此也不能定義字符串類型。

2、C++語(yǔ)言的字符串

C++語(yǔ)言可以自定義類型,可以通過(guò)類完成字符串類型的定義,但C++語(yǔ)言也沒(méi)有原生的字符串類型。
C++語(yǔ)言通過(guò)C++標(biāo)準(zhǔn)庫(kù)提供的string類型實(shí)現(xiàn)對(duì)字符串類型的支持。
string類的特性如下:
A、string直接支持字符串連接
B、string直接支持字符串的大小比較
C、string直接支持子串查找和提取
D、string直接支持字符串的插入和替換

3、C++字符串與數(shù)字的轉(zhuǎn)換

C++標(biāo)準(zhǔn)庫(kù)提供了相關(guān)類對(duì)字符串和數(shù)字進(jìn)行轉(zhuǎn)換。
字符串流類sstream用于string的轉(zhuǎn)換。
使用字符串流類需要包含#include 頭文件。
istringstream表示字符串輸入流,ostringstream表示字符串輸出流。

#include 
#include 

using namespace std;

int main(int argc, char *argv[])
{
    //字符串轉(zhuǎn)換為數(shù)字
    istringstream iss("3.14");
    double pi;
    if(iss >> pi)
    {
        cout << "PI = " << pi<< endl;
    }
    //數(shù)字轉(zhuǎn)換為字符串
    ostringstream oss;
    if(oss << pi)
    {
        string PI = oss.str();
        cout << "PI = " << PI << endl;
    }

    return 0;
}

4、字符串循環(huán)右移示例

#include 
#include 
#include 

using namespace std;

string operator >> (const string& s, int n)
{
    string ret;
    unsigned int pos = 0;
    //右移位數(shù)計(jì)算
    n = n % s.length();
    //右移的開始位置
    pos = s.length() - n;
    //右移部分的子串作為起始
    ret = s.substr(pos);
    //連接未移動(dòng)子串
    ret += s.substr(0,pos);
    return ret;
}

int main(int argc, char *argv[])
{
    string s = "abcdef";
    cout << (s >> 3) << endl;//"defabc"
    return 0;
}

5、string類操作注意事項(xiàng)

string類內(nèi)部通過(guò)一個(gè)數(shù)據(jù)空間保存字符數(shù)據(jù),通過(guò)一個(gè)成員變量保存當(dāng)前字符串的長(zhǎng)度。因此,C++開發(fā)中不能使用C語(yǔ)言的方式對(duì)string的存儲(chǔ)空間進(jìn)行直接操作,而應(yīng)該使用string提供的接口函數(shù)進(jìn)行字符串操作。

#include 
#include 
using namespace std;

int main(int argc, char *argv[])
{
    string s = "12345";
    s.reserve(20);
    //直接對(duì)string對(duì)象的存儲(chǔ)空間進(jìn)行操作
    for(int i = 0; i < 5; i++)
    {
        s[5+i] = 'a'+i;
    }
    cout << s << endl;//12345
    //string對(duì)象的存儲(chǔ)空間修改結(jié)果如下:
    for(int i = 0; i < 5; i++)
    {
        cout << s[5+i] << endl;
    }
    //通過(guò)string類接口進(jìn)行字符串操作
    s.append("ABCD");
    cout << s <

上述代碼中,直接對(duì)string對(duì)象的底層數(shù)據(jù)進(jìn)行字符串操作后,使用string類的接口可能不能訪問(wèn)到對(duì)string對(duì)象底層數(shù)據(jù)的修改。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


本文題目:C++語(yǔ)言學(xué)習(xí)(九)——C++標(biāo)準(zhǔn)庫(kù)簡(jiǎn)介-創(chuàng)新互聯(lián)
文章位置:http://weahome.cn/article/ddjgsi.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部