Seasons.NET

ちょっとした技術ブログです

C++

boost::crcを文字列で取得したい。

checksum()で受け取るデータを文字列で受け取りたかったので、 formatを用いて、取得するサンプルを書いてみた。もっとうまい方法があれば、ご教授願います。 /* -------------------------------------------------------------------------------- */ /** …

最適化を受けない為に

最適化の影響を受けると、必ずここは関数コールされて欲しいところが、 展開されてしまうことがあります。これでは困った!! ということで調べていたら、 #pragma optimize( "" , off ) 〜コード〜 #pragma optimize( "" , on ) こうすれば、最適化の影響を…

コールスタックをプログラムから取得しよう!!(経過報告)

C++

今作っている、コールスタック取得プログラムの経過報告です。 下のようなプログラムを実行すると、APIフックにて埋め込まれたpenter側で 以下の画面の情報を出力します。関数名も取得できてますし、いい感じです。 // GetCallStack.cpp : Defines the entry…

vector atでの要素アクセス

C++

at()とでどっちがアクセスに時間がかからないか調べたところ。 at()とでは、20倍くらい速度が違った。。。なんでだろう?って調べたら、atは、内部で、begin()+posで要素を算出していた・・・。おーまじかよ!!。[]は、先頭生ポインタ + posなので速い。

ダフのデバイス

C C++

id:hajimehoshiのところで紹介されていたアルゴが気になったのでベンチ。最適化の影響を外すため、Debug版で、 FAST = 0.036 OLD = 0.038 ちなみに単純コピー(*dst++=*src++)だと、 最適化では、::memcpy呼ばれてしまいます。 (アセンブラでみてみたらそうな…

wxWidgetsの正しい使い方

DialogBlocks Front Page レイアウトは、これでサクサク作り、イベントハンドラ内の処理に時間をかけるべき。

ios::binaryの実装について調べてみた。

C++

ソースみりゃ一発ですが、なんか気になったので調べてみた。 // TemplateSample01.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> class SpriteBlend { private: SpriteBlend() { } public: enum _blend_typ</iostream>…

Visual C++ 2008 Feature Packで空のプロジェクトをビルドしてこのクオリティ

リボンインターフェイスを指定してビルドするだけでこのクオリティ。 mfcribbon posted by (C)Seasonsあ〜MFC再び勉強しないといけませんねぇ・・・

例外を見直す

C++

The Old New Thing : Cleaner, more elegant, and wrong @iratqqに教えてもらいました。何気ないコードに潜む罠。一度読んでみてはいかがでしょうか?

Visual C++ 2008 Feature Pack Final Release

C++

Visual C++ 2008 Feature Pack Final Releaseが公開されています。 ダウンロード直接:Download details: Visual C++ 2008 Feature Pack ついでに:Download details: VC++ 2008 Samples ただし、限定条件 Supported Operating Systems: Windows Server 2003…

円と直線の当たり判定

C++

Googleで検索するときは、「Collision Circle Line」でたくさん見つかる。 チョー絶に参考になるのが、これ。 Johan van Mol .org - Collision detection & bouncing part 2: actionscript examples of collision detection

STLPort for VS2005

Masaki's Thinking Memo | STLPort インストール for VS2005 参考になりました。 Visual Studio 2005 + STLport 5.1.4 + boost 1.34.1 - ほっしーの技術ネタ備忘録 ちょうどboostも使っているので、ありがたやm(_ _)m

XnViewのライブラリ GFLをビルドする時の注意点

gflC.hを以下のように修正 19 #include <iostream> 20 using namespace std;</iostream>

Windows XPSP2における起動エラー回避方法

Windows XP SP2は、データ実行防止が設定されていると、Turbo C++が起動できませn。 その時の解決方法は、以下を参照 Windows XP SP2マシン上での dclite60.bpl のエラーについて

C++でのマルチバイト変換を支援するライブラリ「POCO」

CodeZine:テキスト処理もPOCOにおまかせ(文字列処理, フレームワーク) C++もライブラリが充実していてまだまだ現役ですが、私は、やっぱりC#っすね〜。

IExtractImage実装状況

C++

かなりがんばって、以下のOSでそれぞれ対応完了。Windows2000 SP4 Windows XP SP2 Windows Vista SP1 RC特にVistaは、サムネイルのサイズ変更にもちゃんと対応できてます。 これには感動。

IExtractImage2のGetDateStampで嵌る

C++

Windowsエクスプローラーの縮小表示を独自のファイル形式でも表示するCOMを作っていて、 WindowsXPで動作確認ができたからよっしゃ公開や。と思って、意気揚々とWindows2000でも テストしたらことごとく動作がおかしく悩みまくりました。 最初サムネイルが全…

パス操作で便利なnormalize

fs::path p( fs::current_path()/"data/" ); // //=> カレントパス/data std::string d("../hoge"); p.append( d.begin() , d.end() ); //=> カレントパス/hoge p.normalize(); もはや、rubyのpathnameみたいっすね。

C++クラスをエクスポートするとき

C++

安全な DLL の中にあるC++ のクラスのエクスポート ここまでのコストを払ってDllにするメリットがなくなってきた。。。 素直にソースコードビルドにしよう。

toupperとtolower

文字列は、文字の集合と考えればこう出来る。 _strlwr_sを使ったんだけど、期待した動きをしない。 文字列を渡しても、ASSERT()に引っかかってまともに動かないので、一旦保留。 void tolower( std::string& inStr ) { BOOST_FOREACH( char& c , inStr ) { c…

ファイルの拡張子を取得するには?

// 拡張子があるファイルを処理するという条件が成り立つ時 boost::filesystem::path p("C:\\hoge.txt"); std::string ret; extension = p.leaf().substr( p.leaf().rfind('.') ); cout << extension.data() << endl;

DLLを動的に読み込む時の注意

C++

susieのプラグインを作っていて、そういやLoadLibraryって 使って事なかったなぁ〜と思い、簡単なサンプルを作ってみたところ、 ホストではうごくのに、VirtualPC 2007のWindows 2000 SP4では、 うまく動かなかった。デバッグするのにVCを入れるのもあれだっ…

boost::filesystemネタ

C++

boost::filesystem::path p( boost::filesystem::current_path()/"test.bin" ); p.string() //=>これで std::stringに変換できる。

MinGWのインストール

SourceForge.net:MinGW MinGW.exeを落とせば、これがネットに接続して必要なファイルを落としてくれます。 MinGW - gdb gdb関係

これは、買っておけ本

C++

ロベールのC++入門講座作者: ロベール出版社/メーカー: 毎日コミュニケーションズ発売日: 2007/11/15メディア: 単行本(ソフトカバー)購入: 24人 クリック: 23,229回この商品を含むブログ (125件) を見る あのロベールさんが本を書いた!! これは、買うし…

シングルトン + Boost::Shared_Ptr

こうしておけば、シングルトンの破棄もスマートポインタまかせ。 1 2 class SingleTon 3 { 4 private: 5 SingleTon() {} 6 static boost::shared_ptr<SingleTon> me; 7 8 public: 9 ~SingleTon() 10 { 11 cout << "Delete SingleTon" << endl; 12 } 13 static SingleTon</singleton>…

Boostインストーラー for VC7,8

仕事で久々に使うからインストール。 Boost Consulting - Free Downloads VC++使いならここからインストーラー落としてインストールすると楽ですね。

STLのエラーを見やすくする。

C++

STL Error Decryptor for C++,STLFilt へぇ〜こんな物があるのかぁ。

あなたのプログラム複雑度は、どれくらい?CCCCでチェック。

id:Wackyさんが使用方法を纏めて下さってます。 しかも、pythonによる変換プログラムまでも。 自分は、rubyで移植させて頂こうかしら。 McCabe So-net blog:老プログラマーの備忘録:McCabeの複雑度 CCCC:ダウンロード先 CCCC=SourceForge.net: Files プログ…

Refactor! for C++

Refactor!™ for C++ - Developer Express - Improving the Developer Experience™ 無償で使えるようです。太っ腹すぎます><