\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