C++

Boost 逆引きリファレンスのサンプルコードをテスト化してみる

この記事は C++ Advent Calendar 2013 の 8 日目の記事になります(あれ、俺 8 日目なのか……)。このネタを思いついたのは、先月に boostjp の ML で見かけた以下の投稿からでした。 Boost 1.55.0 Beta 1 RCが公開されました。http://lists.boost.org/Archiv…

Boost.Test (boost/test/included/unit_test.hpp) の使い方

リンク無しでテスト用のソースファイルが複数ある状況でビルドしようとしたら嵌ったお話。先日、ユニットテストについての講義をする際に「取りあえず Boost.Test を使ってみましょう」と言うことで、リンク(≒ Boost をビルド)しなくても良い boost/test/i…

C++ のテストフレームワークを選ぶポイント

Boost.勉強会 #8 大阪 に参加してきました。発表者、運営者の皆様お疲れ様でした。今回もいろいろと黒魔術的な発表があり「これが変態かー」と感慨深く見ていたのですが、それはそれとして、個人的に気になっていたテーマとして「C++ でのテスト」に関連する…

Web 上での C++11 関連記事まとめ

これは,C++11 Advent Calendar 2011 参加記事です.現在,開催されている Advent Calendar の一覧は Advent Calendar 2011 (jp) 開催予定リスト - Life like a clown を参照下さい.C++11 (C++0x) に関しての情報は 本の虫 や Faith and Brave - C++で遊ぼ…

Boost.GIL で HSV 変換を行う

これは,Boost Advent Calendar 2011 参加記事です.現在,開催されている Advent Calendar の一覧は Advent Calendar 2011 (jp) 開催予定リスト - Life like a clown を参照下さい.当初,Boost.GIL の(初歩的な)逆引きリファレンス的な記事にしようかと…

右クリックによるドラッグ&ドロップ時のドロップ先のパスを取得する

右クリックでファイルやフォルダをマウスでドラッグ&ドロップすると,「ここにコピー」や「ここに移動」のようなコンテキストメニューが表示されます.このメニューで「ここに〜」を選択すると,マウスでドロップしたフォルダへ該当の処理(コピー,移動,..…

_tcscpy_s (strcpy_s, wcscpy_s) の引数

深いディレクトリの削除を再帰的に行う。(ReadOnlyの場合も対応) を使おうとして気づいた事.cstring の文字列処理関数を使おうとすると CRT のセキュリティ機能 関係の警告がよく出てきます.めんどくさいから警告を抑止しようかと思ったのですが,ふと str…

GetLastError() に対応するメッセージを取得する

すぐ忘れるのでメモ.GetLastError() でエラー ID を取得して,FormatMessage() でそれに対応するメッセージを取得する関数 #include <string> #include <windows.h> #include <tchar.h> /* ------------------------------------------------------------------------- */ /* * GetError</tchar.h></windows.h></string>…

テキストボックスのテキストを取得

テキストボックスのテキストの取得方法のメモ. #include <iterator> #include <string> #include <vector> #include <windows.h> #include <tchar.h> std::basic_string<TCHAR> GetText(HWND handle) { int length = ::GetWindowTextLength(handle); if (length <= 0) return std::basic_string<TCHAR>(); std::vector<TCHAR> bu</tchar></tchar></tchar></tchar.h></windows.h></vector></string></iterator>…

Trivial logger for VC++

ログ出力をどうしようかと google-glog を触ってみたのですが何か上手くいかず,結局,自作で逃げてしまいました.そんな訳で簡易リファレンス代わり.ログ出力関連は Boost.Log が採択されているようなので,正式に Boost 入りしたらまた考えようと思います…

C++0x 全会一致で承認され C++11 へ

C++0xの最終国際投票はこの水曜日に終わり、さきほど投票結果が届いた… “全会一致で承認する”我々が”C++0x”と呼んできたC++の次期改正案はついに国際標準になった! ジュネーヴのISOから発行されるのはもう数ヶ月先になるだろうが、それでも今年中には発行さ…

ウィンドウプロシージャをどうラップするか?

まだメモ書き段階.Win32 API で GUI プログラミングをする場合,WndProc と呼ばれるコールバック関数に処理が集中してしまうため,注意しておかないとこの関数がカオスになります.この問題への対策として最初に思い浮かぶのが,WM_XXX 毎に関数を分けると…

RegistryKey.GetValue() を C++ でどう表現するか?

Win32 API のうち,よく使うものについてはラッパクラスを書いていこうと思っています.今は,C++ (Win32 API) か C# (.NET Framework) でコードを書くことが多いので,Win32 API のラッパクラスのインタフェースは .NET Framework に似せて定義していく事を…

Typesafe Enum イディオム

enum を使って定数を定義する場合に,それらの値を使うときは「型名::値」と言う形で記述したいなぁとよく思うのですが,普通の記述 (enum 型名 { ... };) だとこの要求を満たせません.それで,これまで enum を使うときは enum の型名にあたる部分を名前空…

Hello, Haru Free PDF Library!

C++ での PDF ライブラリだと Haru Free PDF Library の評判が良いようなので,このライブラリの使い方を少しずつメモっていこうと思います.取り合えず,最も基本的なところ(PDF ドキュメント作成からファイルへの保存まで)とテキスト処理まで. 基本形 H…

シェルによるファイルコピー

シェルによるファイルコピーで嵌ったのでメモ.Win32 API でファイルのコピーを行う方法として,CopyFile() の他にシェルを利用すると言うものがあります.今回 CopyFile() を使用せずにシェルの機能を利用した理由は,「コピーに長い時間を要する際にプログ…

コントロールのサブクラス化

しばらくブログはお休みモード.今,TreeView を持つアプリを書いているのですが,TreeView のアイテムの名前を変更しようとしたときに,Enter キーを押すと OK ボタンにフォーカスを奪われてしまい意図した動きにならない(「名前の変更」の終了ではなく,…

Boost.勉強会#5 名古屋の雑感

Boost.勉強会#5 名古屋に行ってきました.Boost.勉強会が「Boost があるかもしれない勉強会になりつつある」と言う噂もちらほら聞きましたが,非常に濃い内容で楽しかったです.発表された方,関係者の方々いつもお疲れ様です.以下,印象に残ったものをメモ…

32bit プロセスは 64bit プロセスを見つけられない

所用で「あるプロセスから別のプロセスを終了させるプログラム」を書いていました.終了させる部分の関数は以下のような感じ. #include <string> #include <vector> #include <windows.h> #include <tchar.h> #include <psapi.h> #pragma comment(lib, "psapi.lib") namespace process { std::size_t kill</psapi.h></tchar.h></windows.h></vector></string>…

ディレクトリ内に存在するファイル数の取得方法の比較

あるディレクトリ内のファイル(+ディレクトリ)数を取得する必要があったのですが,Boost.Filesystem と FindFirstFile とでどの程度の速度差になるのかなと思い調べてみました.まず,Boost.Filesystem 版のファイル数カウント関数. #include <string> #include <boost/filesystem.hpp> </boost/filesystem.hpp></string>…

Boost.Asio リンク集

id:faith_and_brave さんが最近 Boost.Asio 関連の記事をたくさん投稿してて,どこかにメモっておきたかったのでここにメモ.それ以外のサイトの記事も見つけたら,ここに一緒に追加していこうと思います. 公式 Boost.Asio - Boost C++ Libraries Examples …

Visutal Studio で Boost C++ Libraries をビルドする

Visutal Studio で Boost C++ Libraries をビルドする必要が出てきたのですが,いくつか嵌った事があったのでメモ.まず,以下のサイトで Windows のバイナリが配布されているようです.バージョンは,3/23 現在で 1.44.0 とやや古い(最新バージョンは 1.46…

継承とテンプレート

この記事は,C++プログラマであるかを見分ける10の質問 - Life like a clown の「抽象クラスとテンプレートクラスの使い分けについてインターフェースと言う観点から述べよ」に対する回答的な記事です.インターフェース的な基底クラスは,テンプレートで代…

コンストラクタ,デストラクタでの例外処理

この記事は,C++プログラマであるかを見分ける10の質問 - Life like a clown の「コンストラクタ,デストラクタにおける例外処理についての戦略を述べよ」に対する回答的な記事になります.例外処理は通常においてもなかなか難しい処理の一つですが,コンス…

virtual デストラクタ

この記事は,C++プログラマであるかを見分ける10の質問 - Life like a clown の「virtual デストラクタの概要および使用上の戦略について述べよ」に対する回答的な記事です.virtual デストラクタの役割は,派生クラスのデストラクタも適切に実行されるよう…

コピーコンストラクタの扱い

この記事は,C++プログラマであるかを見分ける10の質問 - Life like a clown の「コピーコンストラクタおよび代入演算子の扱いにおける戦略について述べよ」に対する回答的な記事です.C++ では,ユーザが明示的にコピーコンストラクタ,および代入演算子を…

ポインタの使用

この記事は,C++プログラマであるかを見分ける10の質問 - Life like a clown の「ポインタの使用方法について,メモリーリーク問題等と絡めながら戦略を述べよ」に対する回答的な記事です.ポインタの使用に関する戦略ですが,経験上は以下の 2点辺りになる…

多重継承の概要

これは,C++プログラマであるかを見分ける10の質問 - Life like a clown の 「多重継承について概要を説明せよ」と言う質問に対する回答的な記事です.多重継承とは,その名の通り,以下のように 2 つ以上のクラスを継承する事を指します. class Base1 { pu…

const 概要

これは,C++プログラマであるかを見分ける10の質問 - Life like a clown の「const の機能について概要を説明せよ」と言う質問に対する回答的な記事です.こんな時ですが,できるだけ平常更新を続けます.C++ の const には大きく分けて 2つの役割があります…

overload と override と hiding

これは, C++プログラマであるかを見分ける10の質問 - Life like a clown の 「overload と override と hiding の違いについて説明せよ」と言う質問に対する回答的な記事です.これらの差については,本の虫: C++におけるoverloadとoverrideとhiding 辺りで…