C++『標準ライブラリとstdネーミングスペース』を認識してください.

3372 ワード

前章ではネーミングスペースについて説明しますが、本節では主に標準ライブラリとstdネーミングスペースについて説明します.
標準C言語(ANSI C)は、「C標準ライブラリ」と呼ばれる15個のヘッダファイルを定義しており、すべてのコンパイラがサポートする必要があります.
Cヘッダファイル説明
stdio.hは、入力および出力のための関数、タイプ、およびマクロを定義する.stdlib.hはC言語で最もよく用いられるシステム関数を含む.string.hはC言語の最も一般的な文字列操作関数を含む.ctype.hは主に2種類の重要な関数を提供する:文字テスト関数と文字サイズ変換関数.assert.hはC言語断言機能を提供し,唯一の目的はマクロassertの定義を提供することである.limits.hは、基本データ型の取値範囲を示す.stddef.hはいくつかの標準定義を定義し、多くの定義が他のヘッダファイルにも表示されます.time.h時間と日付を取得し、時間と日付データの操作とフォーマットされたヘッダファイルを取得する.float.h浮動小数点型数値の最大最小限界を定義した.math.hは数学計算に関連する関数を定義した.error.hエラー処理.locale.hローカライズ設定に関する関数を定義する.setjmp.hは、特別な関数呼び出しと関数戻り順序の方式を定義する.signal.hは、実行中に生成された信号を処理するためのいくつかの関数を提供する.stdarg.h可変パラメータリストは、いくつかのマクロを定義し、関数パラメータが未知である場合に関数のパラメータを取得する.
C++ライブラリ
iostream.h:入出力ヘッダファイルを入力します.fstream.h:ファイル操作ヘッダファイル.wchar.h:ワイド文字処理ヘッダファイル.
C言語と同様に、C++ヘッダファイルは依然として.hは接尾辞であり,その中のクラス,関数などはすべてグローバル範囲である.
違い:
1、C言語のライブラリは大量の関数、マクロ、カスタムデータ型などを定義している.2、C++の新しいライブラリは主に大量のクラスを决めて、それらはとても豊富でとても强大で、多くのよく使う机能に対してカプセル化して、例えばチェーンテーブル、スタック、木などのデータ构造、あなたは更に最初からコードを书く必要はなくて、ライブラリを使うことができます
歴史の回顧.
C++はネーミングスペースの概念を導入し,ライブラリの再記述を計画し,クラス,関数などを一つのネーミングスペースに統一的に組み込む(ネーミングスペースの名前はstd).
しかし、この时すでに多くの古いC++で开発されたプログラムがあって、それらのコードの中で名前の空间を使っていないで、直接元のライブラリを修正するのは1つのとても深刻な结果をもたらします:プログラマーは大量の时间をかけて古いコードを修正したくないため極力反抗して、新しい标准のC++コードを使うことを拒否します.
C++開発者は、元のライブラリとヘッダファイルを保持し、C++で使用し続けることができる良い方法を考えました.その後、元のライブラリをコピーし、その上で少し修正し、クラス、関数などをネーミングスペースstdに組み込むと、新版C++標準ライブラリになります.このように2つの機能が似ているライブラリが存在し,従来のC++を用いたプログラムは元のライブラリを引き続き使用することができ,新しく開発されたプログラムは新版のC++ライブラリを使用することができる.
新版C++もヘッダファイルのネーミングを調整し、接尾辞を削除した.h、だから旧式C++になって、なりました.
元のC言語のヘッダファイルについても、同じ方法を採用していますが、名前ごとにc文字を追加するので、C言語の変化は、なりました.
最後に、古いC++ヘッダファイルは公式に反対されており、サポートされていないことが明らかになったが、古いCヘッダファイルはCへの互換性を維持するために使用することができる.実際には、コンパイラメーカーはお客様の既存のソフトウェアのサポートを停止しないため、古いC++ヘッダファイルは今後数年以内にサポートされる見通しです.
したがって、実際には、以下はC++ヘッダファイルの現状です.
  • 古いC++ヘッダファイル、例えば、などは、公式基準ではありませんが、サポートされ続けます.これらのヘッダファイルの内容はネーミングスペースstdにありません.
  • 新しいC++ヘッダファイル、例えば、などに含まれる基本機能は、対応する古いヘッダファイルと似ているが、ヘッダファイルの内容はネーミングスペースstdにある.

  • 注:標準化の過程で、ライブラリの一部の詳細が変更されたため、古いヘッダファイルと新しいヘッダファイルのエンティティが完全に対応しているとは限りません.
  • 標準Cヘッダファイル、例えば、等は引き続きサポートされる.ヘッダファイルの内容はstdにありません.4)Cライブラリ機能を持つ新しいC++ヘッダファイルには,このような名前が付けられている.それらが提供する内容は、対応する古いCヘッダファイルと同じであり、stdにあるだけです.

  • 履歴のまとめ:
    C++のヘッダファイルが削除されました.h例えば、Cになったヘッダファイルも削除する.hそして前にcを追加しました例えば:
    上記のやり方に従わなくても、工事では依然として使用できますが、概念を混同しやすいです.だから、混ぜて使わないでください.
    C++標準ヘッダファイルの使用
    以前のプレゼンテーションでは、C言語のフォーマット出力関数printfは、ヘッダファイルstdioを導入した.h、これはC++がCに互換性があるため、全く間違いありません.しかし、C++コードでは、C++のヘッダファイルを使用することをお勧めします.CとC++コードを混ぜて使用しないでください.
    たとえばprintf関数を使用する場合は、以下のようにネーミングスペースstdを使用して導入する必要があります.
      #include 
      using namespace std;
    

    C++は、標準ライブラリ内のすべてのクラス、関数などをネーミングスペースstdに配置し、一般的にファイルの先頭にusingキーワード宣言を使用します.ヘッダファイルではなく、ソースコードを表示すると違います.
    #include 
    using namespace std;
    
    class Book{
    private:
        float price;
    public:
    void setprice(float price1){
        price = price1;
    }
    float getprice(){
        return price;
    }  
    };
    
    int main(){
    float price;
    Book book;
    
    scanf("%f", &price);
    book.setprice(price);
    printf("The price of the book is %f.
    ", book.getprice()); return 0; }

    USing namespace stdはネーミングスペースの汚染を防ぐためですが、プロジェクトのヘッダーファイルでは少ないか使わないことをお勧めします.直接usingは空間全体のものをすべて導入するからです.衝突を起こしやすい.「C言語中国語ネット」から来ました.