C++成長の道(11)——常用ヘッダファイル及び対応関数【継続更新ing】

3122 ワード

ヘッダファイル:iostream
  • static_castは強制タイプ変換オペレータです.

  • 強制タイプ変換、明示変換とも呼ばれ、C++の強制タイプ変換オペレータにstatic_があります.cast、dynamic_cast、const_cast、reinterpert_cast 4個.このセクションではstatic_について説明します.castオペレータ.
  • コンパイラが暗黙的に実行する任意のタイプの変換はstatic_castは、intとfloat、doubleとchar、enumとintの間の変換などを完了します.
  • double a = 1.999;
    int b = static_cast(a); //   a = b ;
    

    コンパイラがタイプ変換を暗黙的に実行すると、ほとんどのコンパイラから警告が表示されます.
    e:\vs 2010 projects\static_cast\static_cast\static_cast.cpp(11): warning C4244: “   ”:  “double”   “int”,      

    static_の使用castはコンパイラに、このような精度を損なう変換は知っているうちに行われることを明確に伝えることができ、読書プログラムの他のプログラマーに、油断ではなく変換の目的を明確にすることができます.
    精度の高いタイプを精度の小さいタイプに変換して、static_castはビットカットを用いて処理する.
  • static_を使用castはvoid*ポインタに格納されている値を取り戻すことができます.
  •     double a = 1.999;
        void * vptr = & a;
        double * dptr = static_cast(vptr);
        cout<

    static_castは、ベースクラスと派生クラスポインタまたは参照タイプとの間の変換としても使用できます.しかし、実行時のチェックは行われず、dynamic_に及ばない.cast安全.static_castはタイプ変換文で提供される情報のみによって変換され、dynamic_castはクラス継承システム全体を巡ってタイプチェックを行うためdynamic_castはstatic_より実行効率が高いcastは少し悪いです.次に、親クラスとその派生クラスがあります.
    class ANIMAL
    {
    public:
        ANIMAL():_type("ANIMAL"){};
        virtual void OutPutname(){cout<

    このとき,派生クラスとベースクラスタイプポインタの変換を行う.下から上への変換は安全であり,上から下への変換は必ずしも安全ではないことに注意する.
    int main()
    {
        //           ,            。
        ANIMAL * ani1 = new ANIMAL ;
        DOG * dog1 = static_cast(ani1);
        //dog1->OutPuttype();//  , ANIMAL          OutPutType();        。
    
        //           ,             
        ANIMAL * ani3 = new DOG;
        DOG* dog3 = static_cast(ani3);
        dog3->OutPutname(); //  
    
        //           
        DOG *dog2= new DOG;
        ANIMAL *ani2 = static_cast(dog2);
        ani2->OutPutname(); //  ,       
    
        //
        system("pause");
    
    }

     
  • static_castは任意のタイプの式をvoidタイプに変換することができます.
  • static_castは任意のタイプの式をvoidタイプに変換します.
  • また、const_castと比較してstatic_castは変数のconst属性を交換することはできません.volitaleや__も含まれています.unalignedプロパティ
  • ヘッダファイル:iomanip
  • 関数:setw()
  • 機能:出力が占める列数を指定します.
  • 例:setw(5)<
    cが表す文字を出力し、出力データ項目の長さが5未満の場合は右揃えにする.5を超えると実長で出力
    ヘッダファイル:string
  • 文字列変数を定義する場合、string country="CHINA";このヘッダファイルを含める必要があります.
  • 文字列の長さが要求するとlength=countryとなる.length();//strの長さ
  • を取る
  • getline():行全体の文字列
  • を入力
    例:
    getline(cin,s2);
    文字列を入力する場合は、他の区切り記号を文字列の終了フラグ(カンマ、セミコロンなど)として使用し、区切り記号をgetlineの3番目のパラメータとして使用できます.例えばgetline(cin,s 2,’);
    include 
    
    #include 
    
    using namespace std;
    
    int main() {
    
        for (int i = 0; i < 2; i++){
    
        string city, state;
    
        getline(cin, city, ',');
    
        getline(cin, state);
    
        cout << "City:" << city << “ State:" << state << endl;
    
    }
    
        return 0;
    
    }

    実行結果:
    Beijing,China
    City: Beijing State: China
    San Francisco,the United States
    City: San Francisco State: the United States