<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    iostream.h和iostream 區(qū)別

    轉(zhuǎn)自:http://hi.baidu.com/laddie10/blog/item/079b1d4c32d7d8fcd62afc25.html

    C++中新定義的方法都是有名字空間的 比如cout就屬于std名字空間 如果include頭文件的時(shí)候加上.h,默認(rèn)會(huì)using namespace 否則需要自己加上 using namespace XXX 對(duì)于C中已經(jīng)定義的方法如printf,沒有影響的

    iostream.h是包含輸入/輸出流處理的頭文件,iostream就什么都不是了
    但用iostream要加名詞空間namespace

    #include<iostream.h>
    或者是
    #include<iostream>
    using namespace std;
    二者都行

    #include<iostream.h>是C語言中比較通用的
    #include<iostream>
    using namespace std;
    是C++中比較通用的

    #include <iostream.h>這樣寫,里面的函數(shù)都是全局函數(shù).

    不加.h的是現(xiàn)在C++中規(guī)定的標(biāo)準(zhǔn),目的在于使C++代碼用于移植和混合嵌入時(shí)不受擴(kuò)展名.h的限制,避免因?yàn)?h而造成的額外的處理和修改
    而加.h的是c語言的用法,但是在c++中也支持這種用法,主要是為了向下兼容c 的內(nèi)容,我們平時(shí)盡量不用這種方法
    iostream是現(xiàn)在C++中規(guī)定的標(biāo)準(zhǔn),目的在于使C++代碼用于移植和混合嵌入時(shí)不受擴(kuò)展名.h的限制,避免因?yàn)?h而造成的額外的處理和修改。iostream包含的基本功能和對(duì)應(yīng)的舊頭文件相同,但頭文件的內(nèi)容在名字空間std中。(在標(biāo)準(zhǔn)化的過程中,庫中有些部分的細(xì)節(jié)被修改了,所以舊頭文件和新頭文件中的實(shí)體不一定完全對(duì)應(yīng)。) 一般情況下應(yīng)該用這個(gè)頭文件,而iostream.h則是老式的,以后有可能被淘汰。
         

          經(jīng)常在CSDN以及其他之類的技術(shù)論壇上問關(guān)于C++ 頭文件的問題。提出這些問題的往往就是那些剛學(xué)C++的新手。當(dāng)初我是菜鳥的時(shí)候也問過類似的問題。

         現(xiàn)在來看看下面兩個(gè)include:

         #include<iostream>      // 這個(gè)就是1998年標(biāo)準(zhǔn)化以后的標(biāo)準(zhǔn)頭文件

         #include<iostream.h>        // 這個(gè)就是標(biāo)準(zhǔn)化以前的頭文件

         更本質(zhì)上的區(qū)別就是iostream把標(biāo)準(zhǔn)C++庫的組件放在一個(gè)名位std的namespace里面。而相對(duì)的iostream.h則將這些標(biāo)準(zhǔn)組件放在全局空間里,同時(shí)在標(biāo)準(zhǔn)化以后舊有的C標(biāo)準(zhǔn)庫也已經(jīng)經(jīng)過改造了。 使用前者,就需要在代碼中添加語句:using namespace std;

         看看下面這兩個(gè)頭文件

         // 標(biāo)準(zhǔn)化后經(jīng)過改造的C的標(biāo)準(zhǔn)庫,所有的組件都放在了std中

         #include<cstdio>           

         // 標(biāo)準(zhǔn)化以前C++中的C標(biāo)準(zhǔn)庫

         #include<stdio.h>

         // 在看看這個(gè)頭文件C標(biāo)準(zhǔn)庫下 基于char* 的字符處理函數(shù)庫

         #include<string.h>

         // 在標(biāo)準(zhǔn)化以后他變成了這樣

         #include<cstring>

         // 但是很多朋友還看見過這個(gè)字符串處理函數(shù)庫,他包含了新的string class

         #include<string>

         經(jīng)過了標(biāo)準(zhǔn)委員會(huì)如此大規(guī)模手術(shù)后,在98年以前出品的C++編譯器(BC3.0,BC5.0)上能順利通過編譯的源文件,在支持新標(biāo)準(zhǔn)的編譯器上可能無法順利通過編譯也就是很正常的事了。

    [起因]

         在回過頭來看看標(biāo)準(zhǔn)程序庫,這個(gè)程序庫涵蓋范圍相當(dāng)廣大,提過了許許多多好用的功能。正是因?yàn)檫@樣標(biāo)準(zhǔn)程序庫中class的名稱和函數(shù)名與第三方提供的程序庫中的class名或是函數(shù)名發(fā)生名字沖突的可能性大大增大。為了避免這個(gè)問題的發(fā)生,標(biāo)準(zhǔn)委員會(huì)決定將標(biāo)準(zhǔn)程序庫中每一樣?xùn)|西都放在namespace std中。但是這么做同時(shí)有引來了一個(gè)新的問題。很多C++程序代碼依賴那些已經(jīng)存在很多年的C++ “準(zhǔn)”標(biāo)準(zhǔn)程序庫(C++遲遲未標(biāo)準(zhǔn)化才導(dǎo)致這些情況的發(fā)生),例如iosteam.h,complex.h等等。

         為了解決這個(gè)新出現(xiàn)的問題,標(biāo)準(zhǔn)化委員會(huì)決定設(shè)計(jì)一些新的頭文件名,給那些穿上std外衣的組件所使用。把C++頭文件的.h去掉,于是就有前面出現(xiàn)的iostream,同樣C的頭文件也做了相同的處理,同時(shí)在前面加上了一個(gè)字母c,以表示是C的頭文件(感覺上有中種族歧視的感覺)。同時(shí)標(biāo)準(zhǔn)化委員會(huì)聲明就有的C++頭文件將不再列于被支持的名單之中了,而舊有的C頭文件為了滿足“對(duì)C的兼容性”這個(gè)古老契約,仍然將繼續(xù)存活下去。

    但是,那些編譯器廠商不可能去推翻他們客戶的舊有編譯器(也跟本不會(huì)去這么做),所以那些舊有的C++頭文件仍然茍延殘喘的活了下來,并不斷的擾亂那些C++新兵的心智。

         下面就是現(xiàn)在大多數(shù)C++開發(fā)工具表示頭文件的組織狀態(tài):

    1.     舊的C++頭文件 比如iostream.h,他們雖然被標(biāo)準(zhǔn)化委員會(huì)所拋棄,但由于各大廠商為了各自的商業(yè)利益仍然將繼續(xù)存活下去,這些頭文件的內(nèi)容將不處于namespace std中。

    2.     新的C++頭文件如iostream雖然提供了和舊有頭文件相同的功能,但他的內(nèi)容都并入了namespace std中,從而有效避免了名字污染的問題。

    3.     標(biāo)準(zhǔn)C的頭文件如stdio.h繼續(xù)獲得支持,這類文件的內(nèi)容并未放在std中。

    4.     C函數(shù)庫的技能也有對(duì)應(yīng)的新式C++版本,起名稱類似cstdio,這類頭文件的內(nèi)容也有幸穿上了std的外衣。

    其實(shí)標(biāo)準(zhǔn)化以后的標(biāo)準(zhǔn)程序庫的改動(dòng)并不只有這些而已,很多的標(biāo)準(zhǔn)化組件都被“tamplate化”。其中就有元老級(jí)人物iostream。標(biāo)準(zhǔn)程序庫的問題并不是用一篇,兩篇文章就可以說清楚的。如果你像進(jìn)一步的了解C++的標(biāo)準(zhǔn)程序庫的話,你可以看看侯先生的《C++標(biāo)準(zhǔn)程序庫》。

    posted on 2008-06-20 19:34 hijackwust 閱讀(45661) 評(píng)論(11)  編輯  收藏

    評(píng)論

    # re: iostream.h和iostream 區(qū)別 2009-12-14 20:43 黑劍

    這個(gè)好像不對(duì)吧。。。
    在VS里,
    #include <iostream.h>
    根本通不過編譯  回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2009-12-17 10:47 y_bboo

    還是不太明白原理...
    昨天用#include<iostream.h>還可以編譯通過,今天就不行了,郁悶
    改成#include<iostream>
    use namespace std;
    就可以了

    但是試一下之前編譯通過的iostream.h程序,還是可以編譯的,稍微修改下也不可以用了

    樓主,這是什么問題呢?  回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2010-07-12 17:02 淘寶網(wǎng)女裝皇冠店

    iostream.h是包含輸入/輸出流處理的頭文件,iostream就什么都不是了   回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別[未登錄] 2010-07-15 18:41 FatBear

    不會(huì)吧 我這兒挺正常的@黑劍
      回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2010-12-23 09:37 李果

    iostream.h 在c++ 里面報(bào)錯(cuò)?!  回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2011-03-14 19:40 xiaoluob

    可以通過啊
    ,我剛試的  回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2011-04-10 14:02 Phyking

    vs2008中用#include<iostream.h>不行。
    下面的可以
    #include<iostream>
    use namespace std;   回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2011-10-02 13:44 zengyu

    很好啊;四種形式的頭文件;看來并不是.h的就是舊式的c的頭文件;還有可能是未標(biāo)準(zhǔn)化的c++的頭文件;現(xiàn)在應(yīng)該都用標(biāo)準(zhǔn)化的東西;那么只要不用.h的頭文件;那么就是用的標(biāo)準(zhǔn)頭文件了  回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2012-12-02 17:44 Ronando

    樓主只說了表象,沒有深究原因啊~~
    c++ 嚴(yán)格來說是: c , obejcted-oriented c++, template c++, STL 的語言聯(lián)邦。
    <iostream.h> 屬于c 那一部分, 存在于全局的命名空間
    <iostream> 屬于c++ 之余 std:: 下的那一部分。 為了兼容性, 不得已保留了iostream.h
    這就是為什么 #include<iostream.h> 不許要使用 using namespace std; 來聲明的原因了  回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2014-04-16 13:11 路人江

    建議回復(fù)說#include<iostream.h>報(bào)錯(cuò)的找一下自己的系統(tǒng)中有沒有iostream.h這個(gè)文件。以我自己為例,雖然安裝了VS2010,但編譯器include路徑下只有“iostream”文件,而沒有“iostream.h”。
    用txt打開iostream,文件首行內(nèi)容就是“iostream standard header for Microsoft”,VS直接不帶后綴,這也許就是上面所說的“目的在于使C++代碼用于移植和混合嵌入時(shí)不受擴(kuò)展名.h的限制,避免因?yàn)?h而造成的額外的處理和修改”。  回復(fù)  更多評(píng)論   

    # re: iostream.h和iostream 區(qū)別 2014-04-17 10:20 arlk0rs

    vs2008 iostream.h不存在。
    #include <iostream>
    using namespace std;
    這倆句必須要,要不編譯通不過。
    error C2065: “cout”: 未聲明的標(biāo)識(shí)符  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2014年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(6)

    隨筆檔案(57)

    友情鏈接

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 毛片免费在线观看网站| 亚洲精品宾馆在线精品酒店| 免费欧洲美女牲交视频| 毛片免费全部播放无码| 在线免费观看h片| 特级毛片aaaa免费观看| 亚洲熟妇自偷自拍另欧美| 亚洲视频在线观看地址| 亚洲成A人片在线观看WWW| 亚洲Av无码国产情品久久| 在线免费不卡视频| 97免费人妻无码视频| 鲁大师在线影院免费观看| 三级黄色免费观看| 国产福利免费视频 | 亚洲av乱码一区二区三区香蕉 | 亚洲a无码综合a国产av中文| 亚洲一区无码中文字幕乱码| 亚洲综合视频在线观看| 亚洲色图在线播放| 亚洲高清专区日韩精品| 亚洲一区精品无码| 国产亚洲人成网站在线观看| 精品国产亚洲一区二区在线观看| 亚洲av片一区二区三区| 亚洲第一区在线观看| 亚洲av无码乱码在线观看野外| 在线观看91精品国产不卡免费| 亚洲人成电影网站免费| 中文字幕无码免费久久99| 国产v精品成人免费视频400条| 国产香蕉免费精品视频| 色影音免费色资源| 在线看片韩国免费人成视频| 在线视频免费观看爽爽爽| 久久久久免费看黄A片APP| 天天拍拍天天爽免费视频| 成人免费无码精品国产电影| 日本免费一二区在线电影| 免费永久在线观看黄网站| 亚洲裸男gv网站|