トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
C++
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索

___

■ PREFERENCE(C++StdLibrary)



___

■ std::max min

DEP #include< algorithm >
  template < class T>
  inline const T& max(const T& a, const T& b)
  {
    return a <  b ? b : a;
  }

  // overload 型. 
  template < class T, class Compare>
  inline const T& max(const T& a, const T& b, Compare comp)
  {
  return comp(a,b) ? b : a;
  }
  
  ObjFunc は 関数( PtrFunc )のこと 
___

■ IO(入出力)

___

■ ifstream

DESC ファイルを読み込むクラス ( InputFileStream ) fopen と同じように使うことができる。
    #include< fstream> 

    using namespace std;

    // ファイルをバイナリモードで開く
    ifstream in( "test.bmp", ifstream::binary );

    // ファイルオープンのエラーチェックをする
    if ( !in ) {
      printf( "cannot open" );
      exit(0);
    }

    // 末尾へ移動 ( 後ろから 0 byte )
    in.seekg( 0, ifstream::end );

    // 後ろから 4 byte へ移動
    in.seekg( -4, ifstream::end );

    // サイズを取得する
    int sz = in.tellg();
    char *buf = new char[sz];

    // 先頭にファイルポインタを戻す
    in.seekg( 0, ifstream::beg );

    // 指定したサイズを buf へ読み込む
    in.read( buf, sz );

    // 出力
    ofstream out( "dst.txt", ofstream::binary );
小さいサイズのテキストならば operator< < で簡単によめる。
    ifstream in( "test.txt" );

    string str;

    if >> str;
    cout < <  str < <  endl;
___

■ ofstream

出力するには OutputFileStream クラスを使う
    ofstream out( "d:/dst.txt", ofstream::binary );


    int i;
    out.write( i );

    // 書き込み位置 ( put )を調べる
    int pos = out.tellp();


    // 文字列をかきこむ
    out.write( str, sizeof(str) );

    





___

■ IOStream.Lib

DESC 標準入出力の処理をするクラス stdio.h に相当する処理をしてくれる。 POINT cout std::ostream クラスのインスタンス cin std::istream の一例. cerr std::istream の一例. istream は STDIN から入力をうけつける. ( kb ではない. ) ostream は STDOUT へ出力する( Console ではない ) POINT printf() と違ってタイプセーフ。 書式指定の間違いも起きない。
    #include< iostream>
    using namespace std;

    // 任意の型に対して, 自動的にオーバーロードされたメソッドが呼ばれる。
    int i = 7;
    cout < <  i < <  endl;

    string s = "test";
    cout < <  s;

    double d = 0.1;
    cout < <  d < <  d;

    std::istream
      標準入力を担当する

    std::ostream
      標準出力を担当する
      C でいえば stdout に当たる


___

■ istringstream

文字列をつかってコンストラクをして任意の型に変換する。 atoi, atof の代わりに使う。
    #include< sstream> 

    using namespace std;

    istringstream iss( "10" );

    int i = 0;
    iss >> i;

    // エラーの検出をする
    iss.error();

    

___

■ C++ cast

DESC cast: 型変換をコンパイラに明示
    型変換
  int -> double
  double dval = (double)ival;
    型変更( 中身は不変 ? )
  long -> int *
  int *iptr = (int *)lval;
    const 外し
  const int ciptr;
  int *iptr = (int *)ciptr;

    cpp 
      -> cast の目的をコンパイラに明示
      static_cast: 暗黙の型変換があれば変換

  int -> long
  lval = static_cast< long>(ival); // OK
  void *-> int
  ival = static_cast< void *>ival; // ERR
reinterpret_cast : ptr 同士の変換 | ptr < -> int( ptr アドレスは不変 ) POINT 互換性のない ptr 同士のキャストが使いどころ
  int * -> long *
  lptr = reinterpret_cast< lptr>(iptr);
const_cast : const, volatile 外し cint * -> int * iptr = const_cast< int *>ciptr; cint -> int ival = const_cast< int>cival; // ERR( ptr 以外はだめ ? ) dynamic_cast : CBase から CDerived への型保障キャスト (逆)? POINT upcast : CDerived -> CBase downcast : CBase -> CDerived ( UML 参考 )
  CHuman -> CMan
  humanptr = dynamic_cast< CHuman *>manptr;
WARNING dynamic_cast が使用できるのは, 仮想メンバ関数をもつ場合

NINJAIDX 12