• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            頭文件string與string.h的區別

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

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

            喔,原來iostream是C++的頭文件,iostream.h是C的頭文件,即標準的C++頭文件沒有.h擴展名,將以前的C的頭文件轉化為C++的頭文件后,有時加上c的前綴表示來自于c,例如cmath就是由math.h變來的。

            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;
            }

            相關解析:

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

            一般一個C++的老的帶“.h”擴展名的庫文件,比如iostream.h,在新標準后的標準庫中都有一個不帶“.h”擴展名的相對應,區別除了后者的好多改進之外,還有一點就是后者的東東都塞進了“std”名字空間中。 

            但唯獨string特別。 
            問題在于C++要兼容C的標準庫,而C的標準庫里碰巧也已經有一個名字叫做“string.h”的頭文件,包含一些常用的C字符串處理函數,比如樓主提到的strcmp。 
            這個頭文件跟C++的string類半點關系也沒有,所以<string>并非<string.h>的“升級版本”,他們是毫無關系的兩個頭文件。 
            要達到樓主的目的,比如同時:

            #include <string.h> 
            #include <string> 
            usingnamespace std; 
            或者 
            #include <cstring> 
            #include <string> 
            其中<cstring>是與C標準庫的<string.h>相對應,但裹有std名字空間的版本。
            最大的挑戰是把字符串頭文件理清楚:

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

             

            <string>是c++ 的頭文件,其內包含了一個string類,string s1就是建立一個string類的對象 
            <string.h> 的c語言的東西 并無類,所以不能 string s1 

            <cstring>文件實際上只是在一個命名空間std中include了 <string.h>
            成人妇女免费播放久久久| 久久受www免费人成_看片中文| 亚洲级αV无码毛片久久精品| 99久久精品日本一区二区免费| 亚洲一本综合久久| 国产毛片欧美毛片久久久| 中文字幕无码av激情不卡久久| 国产一区二区三精品久久久无广告| 久久精品天天中文字幕人妻| 国产精品99久久久久久宅男小说| 中文字幕亚洲综合久久2| 国产成人综合久久精品红| 国内精品久久久久久野外| 久久精品九九亚洲精品天堂| 2021最新久久久视精品爱| 久久久青草久久久青草| 色综合合久久天天综合绕视看| 久久伊人精品青青草原日本| 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产亚洲美女精品久久久| 久久精品国产2020| 久久天天婷婷五月俺也去| 久久99久久成人免费播放| 久久不见久久见免费视频7| 亚洲精品乱码久久久久久久久久久久| 久久精品成人欧美大片| 欧美激情一区二区久久久| 久久天天躁狠狠躁夜夜av浪潮 | 无码超乳爆乳中文字幕久久| 精品久久人妻av中文字幕| 久久五月精品中文字幕| 国内精品免费久久影院| 国内精品久久久久久麻豆| 久久国产精品免费一区| 久久99精品久久久久久秒播| 亚洲国产精品久久久久久| 91精品国产91久久久久久| 国产激情久久久久影院| 亚洲狠狠久久综合一区77777| 狠狠久久亚洲欧美专区| 伊人色综合久久|