欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C++標(biāo)準(zhǔn)庫和std命名空間是什么

這篇文章主要介紹“C++標(biāo)準(zhǔn)庫和std命名空間是什么”,在日常操作中,相信很多人在C++標(biāo)準(zhǔn)庫和std命名空間是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”C++標(biāo)準(zhǔn)庫和std命名空間是什么”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

邵原ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

C++ 是在C語言的基礎(chǔ)上開發(fā)的,早期的 C++ 還不完善,不支持命名空間,沒有自己的編譯器,而是將 C++ 代碼翻譯成C代碼,再通過C編譯器完成編譯。這個(gè)時(shí)候的 C++ 仍然在使用C語言的庫,stdio.h、stdlib.h、string.h 等頭文件依然有效;此外 C++ 也開發(fā)了一些新的庫,增加了自己的頭文件,例如:

  • iostream.h:用于控制臺(tái)輸入輸出頭文件。

  • fstream.h:用于文件操作的頭文件。

  • complex.h:用于復(fù)數(shù)計(jì)算的頭文件。


和C語言一樣,C++ 頭文件仍然以.h為后綴,它們所包含的類、函數(shù)、宏等都是全局范圍的。

后來 C++ 引入了命名空間的概念,計(jì)劃重新編寫庫,將類、函數(shù)、宏等都統(tǒng)一納入一個(gè)命名空間,這個(gè)命名空間的名字就是std。std 是 standard 的縮寫,意思是“標(biāo)準(zhǔn)命名空間”。

但是這時(shí)已經(jīng)有很多用老式 C++ 開發(fā)的程序了,它們的代碼中并沒有使用命名空間,直接修改原來的庫會(huì)帶來一個(gè)很嚴(yán)重的后果:程序員會(huì)因?yàn)椴辉富ㄙM(fèi)大量時(shí)間修改老式代碼而極力反抗,拒絕使用新標(biāo)準(zhǔn)的 C++ 代碼。

C++ 開發(fā)人員想了一個(gè)好辦法,保留原來的庫和頭文件,它們?cè)?C++ 中可以繼續(xù)使用,然后再把原來的庫復(fù)制一份,在此基礎(chǔ)上稍加修改,把類、函數(shù)、宏等納入命名空間 std 下,就成了新版 C++ 標(biāo)準(zhǔn)庫。這樣共存在了兩份功能相似的庫,使用了老式 C++ 的程序可以繼續(xù)使用原來的庫,新開發(fā)的程序可以使用新版的 C++ 庫。

為了避免頭文件重名,新版 C++ 庫也對(duì)頭文件的命名做了調(diào)整,去掉了后綴.h,所以老式 C++ 的iostream.h變成了iostreamfstream.h變成了fstream。而對(duì)于原來C語言的頭文件,也采用同樣的方法,但在每個(gè)名字前還要添加一個(gè)c字母,所以C語言的stdio.h變成了cstdio,stdlib.h變成了cstdlib

需要注意的是,舊的 C++ 頭文件是官方所反對(duì)使用的,已明確提出不再支持,但舊的C頭文件仍然可以使用,以保持對(duì)C的兼容性。實(shí)際上,編譯器開發(fā)商不會(huì)停止對(duì)客戶現(xiàn)有軟件提供支持,可以預(yù)計(jì),舊的 C++ 頭文件在未來數(shù)年內(nèi)還是會(huì)被支持。

下面是我總結(jié)的 C++ 頭文件的現(xiàn)狀:
1) 舊的 C++ 頭文件,如 iostream.h、fstream.h 等將會(huì)繼續(xù)被支持,盡管它們不在官方標(biāo)準(zhǔn)中。這些頭文件的內(nèi)容不在命名空間 std 中。

2) 新的 C++ 頭文件,如 iostream、fstream 等包含的基本功能和對(duì)應(yīng)的舊版頭文件相似,但頭文件的內(nèi)容在命名空間 std 中。

注意:在標(biāo)準(zhǔn)化的過程中,庫中有些部分的細(xì)節(jié)被修改了,所以舊的頭文件和新的頭文件不一定完全對(duì)應(yīng)。

3) 標(biāo)準(zhǔn)C頭文件如 stdio.h、stdlib.h 等繼續(xù)被支持。頭文件的內(nèi)容不在 std 中。

4) 具有C庫功能的新C++頭文件具有如 cstdio、cstdlib 這樣的名字。它們提供的內(nèi)容和相應(yīng)的舊的C頭文件相同,只是內(nèi)容在 std 中。

可以發(fā)現(xiàn),對(duì)于不帶.h的頭文件,所有的符號(hào)都位于命名空間 std 中,使用時(shí)需要聲明命名空間 std;對(duì)于帶.h的頭文件,沒有使用任何命名空間,所有符號(hào)都位于全局作用域。這也是 C++ 標(biāo)準(zhǔn)所規(guī)定的。

不過現(xiàn)實(shí)情況和 C++ 標(biāo)準(zhǔn)所期望的有些不同,對(duì)于原來C語言的頭文件,即使按照 C++ 的方式來使用,即#include <cstdio>這種形式,那么符號(hào)可以位于命名空間 std 中,也可以位于全局范圍中,請(qǐng)看下面的兩段代碼。

1) 使用命名空間 std:

#include <cstdio>int main(){std::printf("http://c.biancheng.net\n");return 0;}


2) 不使用命名空間 std:

#include <cstdio>int main(){printf("http://c.biancheng.net\n");return 0;}

這兩種形式在 Microsoft Visual C++ 和 GCC 下都能夠編譯通過,也就是說,大部分編譯器在實(shí)現(xiàn)時(shí)并沒有嚴(yán)格遵循標(biāo)準(zhǔn),它們對(duì)兩種寫法都支持,程序員可以使用 std 也可以不使用。

第 1) 種寫法是標(biāo)準(zhǔn)的,第 2) 種不標(biāo)準(zhǔn),雖然它們?cè)谀壳暗木幾g器中都沒有錯(cuò)誤,但我依然推薦使用第 1) 種寫法,因?yàn)闃?biāo)準(zhǔn)寫法會(huì)一直被編譯器支持,非標(biāo)準(zhǔn)寫法可能會(huì)在以后的升級(jí)版本中不再支持。

使用C++的頭文件

雖然 C++ 幾乎完全兼容C語言,C語言的頭文件在 C++ 中依然被支持,但 C++ 新增的庫更加強(qiáng)大和靈活,請(qǐng)讀者盡量使用這些 C++ 新增的頭文件,例如 iostream、fstream、string 等。

前面幾節(jié)我們使用了C語言的格式輸出函數(shù) printf,引入了C語言的頭文件 stdio.h,將C代碼和 C++ 代碼混合在了一起,我不推薦這樣做,請(qǐng)盡量使用 C++ 的方式。下面的例子演示了如何使用 C++ 庫進(jìn)行輸入輸出:

#include <iostream>#include <string>int main(){//聲明命名空間stdusing namespace std;//定義字符串變量string str;//定義 int 變量int age;//從控制臺(tái)獲取用戶輸入cin>>str>>age;//將數(shù)據(jù)輸出到控制臺(tái)cout<<str<<"已經(jīng)成立"<<age<<"年了!"<<endl;return 0;}

運(yùn)行結(jié)果:
C語言中文網(wǎng)↙
4↙
C語言中文網(wǎng)已經(jīng)成立4年了!

string 是 C++ 中的字符串類,初學(xué)者可以將 string 看做一種內(nèi)置的數(shù)據(jù)類型,就像 int、float 等,可以用來定義變量。cin 用于從控制臺(tái)獲取用戶輸入,cout 用于將數(shù)據(jù)輸出到控制臺(tái),下節(jié)我們會(huì)詳細(xì)講解。

讀者暫時(shí)不需要深入了解這段代碼的細(xì)節(jié),只需要留意using namespace std;,它聲明了命名空間 std,后續(xù)如果有未指定命名空間的符號(hào),那么默認(rèn)使用 std,代碼中的 string、cin、cout 都位于命名空間 std。

在 main() 函數(shù)中聲明命名空間 std,它的作用范圍就位于 main() 函數(shù)內(nèi)部,如果在其他函數(shù)中又用到了 std,就需要重新聲明,請(qǐng)看下面的例子:

#include <iostream>void func(){//必須重新聲明using namespace std;cout<<"http://c.biancheng.net"<<endl;}int main(){//聲明命名空間stdusing namespace std;cout<<"C語言中文網(wǎng)"<<endl;func();return 0;}

如果希望在所有函數(shù)中都使用命名空間 std,可以將它聲明在全局范圍中,例如:

#include <iostream>//聲明命名空間stdusing namespace std;void func(){cout<<"http://c.biancheng.net"<<endl;}int main(){cout<<"C語言中文網(wǎng)"<<endl;func();return 0;}

到此,關(guān)于“C++標(biāo)準(zhǔn)庫和std命名空間是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)頁題目:C++標(biāo)準(zhǔn)庫和std命名空間是什么
瀏覽地址:http://chinadenli.net/article0/giihio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站排名企業(yè)網(wǎng)站制作、定制開發(fā)定制網(wǎng)站、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司