CPP

スタティック(static)変数

C CPP

聞かれて説明できなかったので復習。 関数やブロック内で宣言された変数で、そのブロックが終了しても値を保持しているもの。静的変数とも言う。 「static」というキーワードを用いて宣言する言語が多い。 オブジェクト指向のプログラミング言語の場合は、生…

アニメーションでみるソートアルゴリズム比較

http://vision.bc.edu/~dmartin/teaching/sorting/anim-html/all.html縦軸がソート前データの並び、横軸がアルゴリズム。どんなデータ配置のときに、どのアルゴリズムが速いかが目で見て分かります。

GoogleのC++コーディング規約

CPP

http://www.henshi.net/k/hiki.cgi?GoogleCppStyleGuideGoogle社内には各言語ごとにコーディング規約があるそうです。

マージ・ソート : 巨大データのソート法

C CPP

http://codezine.jp/article/detail/2886?p=1ソートのアルゴリズムの一種。わかりやすく解説してあります。

関数ポインタと関数ポインタ配列

CPP

よくわすれるのでメモ void (*func)(char*) = func00; void (*func_table[TABLE_MAX])(char*) = { func00, func01, func02, }; 参考 http://www.nurs.or.jp/~sug/soft/tora/tora13.htm

atoi()みたいな関数でを16進数変換するものない?

CPP

strtolという関数があります。sample: int atoi16( const char *NumberString ) { char *stopString; int result = strtol( NumberString, &stopString, 16 ); return result; } ネタ元 http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200009/0…

STL map で iteratorで回したときの キーとデータの取得

CPP

キーはfirst、データはsecondで取れる。 map::iterator map_ite; for(map_ite=e2p_data_list.begin();map_ite!=e2p_data_list.end();map_ite++){ printf("address = %4x : data = %x\r\n",map_ite->first,map_ite->second); }

メンバ関数ポインタ

CPP

使ったわけじゃないけど、珍しかったのでメモ。 http://www.geocities.jp/ky_webid/cpp/language/034.html

ARMにて関数を動的に書き換えてみた

CPP

テストケースを作っていて、他オブジェクトの関数の返り値を変えたかったけれど、ソースをいじりたくなかったのでチャレンジ。 class Debug_HookFunction{ private: void *m_base_fp; unsigned long m_base_instruction; public: Debug_HookFunction(){ ASSE…

標準出力から一行読み込む

CPP

std::cin に getline() という関数があるのでこれを使うといいのだが、 これがstringに対応してない。なので 以下のように std::getline() をつかうといいそうだ // string型で1行入力 string b2; // cin.getline(b2); // なんと,これが出来ない getline(ci…

zlibでzip解凍

CPP

swfのZlibBitmapDataをデコードするのに使った。 ココからwin32用のzlibライブラリを持ってくる http://gnuwin32.sourceforge.net/packages/zlib.htm 中にあるzlib1.dllをsystem32の下にでも置く zlib.libをプロジェクトのフォルダに置いてリンクする設定を…

CreateProcess()でバッチファイルを実行したとき困ったこと

CPP

第6引数の DWORD dwCreationFlags, // creation flags に DETACHED_PROCESS, // DOS窓を表示しないための指定 を入れたら、うまくバッチファイル内に書いたリダイレクト処理(dir > list.txtみたいなの)が動かなくなった。( CREATE_NEW_CONSOLE | IDLE_PRIORI…

USBカメラ(WebCam)をつかうために調べたよメモ

CPP

DirectShowを使った、ビデオデバイスからのキャプチャ 最も簡単版 http://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap10/index.html2007/7/5現在、DirectShowはPlatformSDKに移ったようなので、 そっちをインストールしてから試すべし。

C++ のシンボルをデマングルする

CPP

C++ コンパイラはシンボルが一意の名前を持つように名前マングル (name mangling) と呼ばれる処理を行うらしい。 そういやエラーとかで読みにくい名前になってて困ることがあるね。 デマングルとはそれを復元することのようだ。http://0xcc.net/blog/archive…

__FUNCTION__マクロ

CPP

__FUNCTION__ __FUNCDNAME__ __FUNCSIG__というマクロが使えるコンパイラもあるらしい。http://d.hatena.ne.jp/Wacky/20060611/1150007605 #include int main(void) { puts(__FUNCTION__); puts(__FUNCDNAME__); puts(__FUNCSIG__); return 0; } 実行結果: …

C++におけるデータのソート方法の比較

CPP

http://codezine.jp/a/article.aspx?aid=394&p=1Cのqsort()よりC++のstl::sort()のほうが早いのか。 これからは条件はあるけど、特別な事情がない限りstl::sort()ってことで。

メモリ関係のバグを発見するライブラリ

CPP

D.U.M.A. - Detect Unintended Memory Access 説明 http://vimrc.hp.infoseek.co.jp/diary/2006-04.html#2006-04-21 UNIXとWIn32用らしい。組み込みでは無理か

ロケールを初期化しないと文字列操作系関数の動作がおかしくなる

CPP

http://www.jp.arm.com/tec_support/faqdev/ads038.html atoi()がへんな値ばっかり返すのでおかしいなと調べたら、こんなんみつかった。今日まで知らなかった。いろいろリリースしちゃってるのに大丈夫なんかなぁ・・・。

2のべき乗判定

CPP

豆知識ルーチン ある数が2のべき乗かどうかの判定 if (x & (x-1)) = 0 2のべき乗 else 2のべき乗でない

プリプロセッサで__LINE__を文字列にする方法

CPP

ネタ元 http://vimrc.hp.infoseek.co.jp/diary/2006-02.html#2006-02-03 #define STRINGIFY(x) #x #define STRINGIFY2(x) STRINGIFY(x) printf("%s", STRINGIFY2(__LINE__)); と2段階のmacroを使う。

wxWidgets(wxWindows)

CPP

wxStringからマルチバイト文字列を取得する cmb_str()を使う ex) setlocale( LC_ALL, "Japanese" ); ・・・ char cBuff[256]=""; wxString oWcString; oWcString = TextCtrl_Input->GetValue(); strcpy(cBuff,oWcString.cmb_str()); wxStringとDefine定義(wxUSE…

リンクリストのサイクルチェック

CPP

「単方向linked listの循環参照判定をO(n)で行なう」より // labelingあり bool isCyclic(list*p){ set s; while(p!=null){ if (p in s) return true; s.insert(p); p = p->next; } return false; } // urao first // ループの循環長をと想定しながら、nを2…

static修飾子

CPP

変数につけるとスタックメモリを使わなくなる という効能がある。static つけると静的オブジェクト/変数になるとは知っていたが、 具体的にどんな効き目があるのかしらんかった・・・。Windowsアプリ作ってると スタックとか意識しないで組めちゃうもんなぁ

拡張string

CPP

http://tricklib.com/cxx/dagger/xstring.hそのうち使ってみよう

ANCI組み込みマクロ定義

CPP

いままで知らなかったので抜粋。 __DATE__ 現在のソース ファイルをコンパイルしたときの日付 __FILE__ 現在のソース ファイル名 __LINE__ 現在のソース ファイルの行番号 __TIME__ 現在のソース ファイルの最終のコンパイル時刻 __TIMESTAMP__ 現在のソース…

HRESULT型の判定にSUCCEEDEDやFAILEDは使えない(ことがある)

CPP

XML DOMの参考ページで以下があるが http://www.utj.co.jp/xml/dev/dom/dxdom1_1.htmlこの中のソースはそのまま貼り付けても動きません。 理由: CoInitialize()/CoUninitialize()が使われていない あちこち戻り値のHRESULTをFAILEDマクロで判断している htt…

wxWindows - wxFFile

CPP

こんな感じで一気に読み込めます。 closeしなくてもデストラクタで閉じてくれるので便利。 { wxFFile ofile(*ite,"rb"); if( !ofile.IsOpened() ){ wxMessageDialog(NULL,wxT("よめへん!"),wxT("でばっく"),wxOK).ShowModal(); }else{ wxString strSource; …

キーボードフック

CPP

こんな感じでやってみましたが・・・ コンソールアプリではどうも引っ掛けできない なにかダイアログだせば、その上でキーを押すとフックできるみたい LRESULT CALLBACK KeyboardProc(int p_nCode, WPARAM p_wParam, LPARAM p_lParam) { if( p_nCode

キーストロークをシミュレートする(キーボードを制御する)

CPP

keybd_event()を使うとできるらしい。 試してないんだけどね

コンソールアプリのウインドウハンドルを取得する

CPP

char cBuff[256] = ""; GetConsoleTitle(cBuff,256); FindWindow(NULL,cBuff); これでもいける FindWindow("ConsoleWindowClass",NULL) コンソールもウィンドウハンドルを持っている。 (というかもってないとWin32APIがつかえないね)ウインドウハンドルを取…