• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            頭文件string與string.h的區(qū)別

            Posted on 2019-02-27 09:58 Prayer 閱讀(234) 評(píng)論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX

            在C++中,#include<iostream>與#include<iostream.h>的區(qū)別,前者要使用更新的編譯器(其實(shí)大部分編譯器多比較前衛(wèi)了,出了有些搞嵌入式的用變態(tài)的編譯器)。

            喔,原來(lái)iostream是C++的頭文件,iostream.h是C的頭文件,即標(biāo)準(zhǔn)的C++頭文件沒有.h擴(kuò)展名,將以前的C的頭文件轉(zhuǎn)化為C++的頭文件后,有時(shí)加上c的前綴表示來(lái)自于c,例如cmath就是由math.h變來(lái)的。

            using namespace std //使用名字空間(使用所有)

            using namespace std::cout//只使用cout

            如不用using,則在代碼前可以用sdt::cout<<表示使用的是std中的cout。

            1
            2
            3
            4
            5
            #include<iostream.h>//必須要加上.h
            void main()
            {
            cout<<"Right?"<<endl;
            }

            1
            2
            3
            4
            5
            6
            7
            8
            9
            #include<string>
            #include<iostream>//此處必須去掉.h
            usingnamespace std ;
            void main()
            {
            string s;
            getline(cin,s);
            cout<<"Right?"<<endl;
            }

            相關(guān)解析:

            iostream.h里面定義的所有類以及對(duì)象都是在全局空間里,所以你可以直接用cout   
            但在iostream里面,它所定義的東西都在名字空間std里面,所以你必須加上   
            using namespace std才能使用cout

            一般一個(gè)C++的老的帶“.h”擴(kuò)展名的庫(kù)文件,比如iostream.h,在新標(biāo)準(zhǔn)后的標(biāo)準(zhǔn)庫(kù)中都有一個(gè)不帶“.h”擴(kuò)展名的相對(duì)應(yīng),區(qū)別除了后者的好多改進(jìn)之外,還有一點(diǎn)就是后者的東東都塞進(jìn)了“std”名字空間中。 

            但唯獨(dú)string特別。 
            問(wèn)題在于C++要兼容C的標(biāo)準(zhǔn)庫(kù),而C的標(biāo)準(zhǔn)庫(kù)里碰巧也已經(jīng)有一個(gè)名字叫做“string.h”的頭文件,包含一些常用的C字符串處理函數(shù),比如樓主提到的strcmp。 
            這個(gè)頭文件跟C++的string類半點(diǎn)關(guān)系也沒有,所以<string>并非<string.h>的“升級(jí)版本”,他們是毫無(wú)關(guān)系的兩個(gè)頭文件。 
            要達(dá)到樓主的目的,比如同時(shí):

            #include <string.h> 
            #include <string> 
            usingnamespace std; 
            或者 
            #include <cstring> 
            #include <string> 
            其中<cstring>是與C標(biāo)準(zhǔn)庫(kù)的<string.h>相對(duì)應(yīng),但裹有std名字空間的版本。
            最大的挑戰(zhàn)是把字符串頭文件理清楚:

            <string.h>是舊的C 頭文件,對(duì)應(yīng)的是基于char*的字符串處理函數(shù);<string>是包裝了std 的C++頭文件,對(duì)應(yīng)的是新的string 類(看下文);
            <cstring>是對(duì)應(yīng)于舊C 頭文件的std 版本。(包含std)

             

            <string>是c++ 的頭文件,其內(nèi)包含了一個(gè)string類,string s1就是建立一個(gè)string類的對(duì)象 
            <string.h> 的c語(yǔ)言的東西 并無(wú)類,所以不能 string s1 

            <cstring>文件實(shí)際上只是在一個(gè)命名空間std中include了 <string.h>
            国产成人精品综合久久久| 国产韩国精品一区二区三区久久 | 久久国产精品久久精品国产| 久久久久国产一区二区| 久久精品国产亚洲AV影院| AV无码久久久久不卡蜜桃 | 精品久久久无码中文字幕天天| 欧美精品九九99久久在观看| 一本久久a久久精品综合夜夜| 无码久久精品国产亚洲Av影片| 久久99精品久久久久久噜噜| 亚洲欧美成人久久综合中文网 | 免费精品久久天干天干| 久久久久久av无码免费看大片| 久久久久亚洲国产| 亚洲国产精品婷婷久久| 一本一道久久综合狠狠老| 久久九九久精品国产免费直播| 国产精品99久久精品| 久久热这里只有精品在线观看| 久久精品国产99久久丝袜| 久久久精品人妻一区二区三区蜜桃 | 欧美日韩成人精品久久久免费看| 中文精品久久久久国产网址| 人妻无码久久精品| 久久国产影院| 91精品国产91久久久久久| 丁香五月网久久综合| 久久精品人人做人人爽电影蜜月| 久久天天婷婷五月俺也去| 欧美粉嫩小泬久久久久久久| 亚洲人成网站999久久久综合| 久久亚洲国产午夜精品理论片| 国产亚州精品女人久久久久久 | 国产精品久久波多野结衣| 欧美午夜精品久久久久免费视| 99久久99这里只有免费费精品| 久久精品免费一区二区| 中文字幕乱码久久午夜| 综合人妻久久一区二区精品| 国产亚洲精品久久久久秋霞|