C++

C++ のキャスト

これは,C++プログラマであるかを見分ける10の質問 - Life like a clown の 「*_cast およびCスタイルのキャストそれぞれについて概要を説明せよ」と言う質問に対する回答的な記事です.この辺りからしばらくただの説明的なものになるのでざっと書いていきま…

iterator の役割

これは,C++プログラマであるかを見分ける10の質問 - Life like a clown の 「iterator の役割について説明せよ」 と言う質問に対する回答的な記事です.iterator の詳細については Iterator library - cppreference.com 辺りを参照してもらうとして,ここで…

C++プログラマであるかを見分ける10の質問

「優れたPerlプログラマを見分ける27の質問」の日本語訳 - Islands in the byte stream, Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ を見ながら C++ だとこれくらいかなぁと取りあえず作ってみました.前半は単純な機能の説明,後半は…

レジストリ関連の Win32API の扱い

x86/x64,char/wchar_t など様々な設定でビルドする場合,レジストリ関連の Win32API は少し注意して扱う必要があるようです. REG_DWORD REG_DWORD が一番嵌りました.std::size_t 辺りを使用している場合,(Visual Studio 2008 では) x86 は uint32_t のよ…

スピンコントロールの使い方

すぐ忘れてしまうのでメモ.GUI デザイン部分は ResEdit Resource Editor を使用する事を想定しています. ダイアログ上に Edit Control と Spin Control を作成する. Dialog → Tab order wizard で Spin Control を取り付ける Edit Control のタブオーダー…

Windows のコンテキストメニューにアイコンを表示する方法

下記のように,Windows でファイルなどを右クリックした際に表示されるコンテキストメニューにアイコンが表示されている事がありますが,これを綺麗に実現しようとすると凄く大変だったと言う話.@rofi が頑張ってくれたものですが. 概要 コンテキストメニ…

C++er に贈るコード片

この記事は,C++ Advent Calendar jp 2010 : ATND 参加記事です.これまで C++ のコードを書いてきた中で,「あぁなるほど」と思ったコード片を紹介していきます.せっかくなのでクリスマスっぽいタイトルで.あ,クリスマスは中止でしたっけ.各 Advent Cal…

constexpr 登場

C++0x の機能の一つである constexpr が gcc 4.6 に実装されたようです. GCC 4.6でconstexpr動いた! - Faith and Brave - C++で遊ぼう 本の虫: gccにconstexprが実装された constexpr が導入される事で,switch 文の case の箇所に関数が使えるようになる…

Boost.勉強会 #3 関西

Boost.勉強会 #3 無事終了.今回は地元開催だったので参加するのが楽だったのですが迷いましたw 初っ端発表なのに遅刻したら洒落にならないなぁとヒヤヒヤしながら何とか10分前に到着.発表は OAuth based on Boost.Asio のような話をしてきました.タイト…

Boost.勉強会 #2 雑感

Boost.勉強会 #2 終了.「あぁ使えそう」と言う話から「へ,へんたいだー」と言う話まで様々な話が聞けて非常に楽しかったです.各種資料などの一覧は,Boost.勉強会#2を開催したよ - Faith and Brave - C++で遊ぼう から辿れます. Boostライブラリ一周の旅…

#include の魔力

何気なく呟いた言葉が確変状態になっていました. http://favotter.net/status.php?id=22769039758 それで,反応を眺めていると「何をやってるか分からない」と言うものがいくつかあったので,一応簡単な補足説明を載せておきます.#include は指定したファ…

Library for libraries

C++は何を間違えたのか: 人生を書き換える者すらいた。より.2009/12 のBoost.勉強会で一番記憶に残ってるのが,id:faith_and_brave がプレゼン中に何度か使っていた「Library for libaries」と言う言葉でした.この言葉には,Boost などが提供するライブラ…

Borland C++ Compiler 5.5 の環境設定

第1回 C言語に触れてみよう | 日経 xTECH(クロステック) を読んで「Borland ってフリーのコンパイラがあったのかぁ」と今更ながらに気づいたので,CLX C++ Libraries を BCC5.5 に対応中*1.対応版は後ほどリリースするとして,今回は BCC5.5 で CLX C++ L…

プログラミングの魔導書 Vol.1

関連 URL 一覧 著者達によるもの Life like a clown - とある C++ の魔導書 Faith and Brave - C++で遊ぼう - 「プログラミングの魔導書」の情報公開 本の虫 - 新しいプログラミング雑誌の発行 本の虫 - プログラミングの魔導書 Vol. 1のレビュー melpon日記…

エンコード処理のインターフェース

clx ver 0.17.0 で,これまで個々に実装していた,文字列を何らかの形にエンコードする関数群のインターフェースを統一しました.具体的には,hexdump(), base64::encode(), base64::decode(), html::escape(), html::unescape(), uri::encode(), uri::decod…

VC++ 2010 の環境設定

Visual Studio 2010 も出たと言うことで,久々に Windows (VC++ 2010) でも CLX C++ Libraries のコンパイルテストを通して行ったのですが(通常時は,zlib,OpenSSL 辺りのライブラリが必要なものは cygwin 上でしか確認してなかった),環境設定のメモがど…

既存のソースコードの読み方

C++

たまに「既存のソースコード(特に、ある程度歴史のあるソースコード)を上手に効率よく読んでいくにはどうしたら良いか?」と言う事を考えます。例えば、以下のコードは Boost 1.20.0 の lexical_cast のコードです。 namespace boost { ... template<typename Target, typename Source> Targe</typename>…

インターフェースを統一する事の利便性と難しさ

追記: 特に修正を加えずこのままにしておきますが,コメントの指摘内容と私の回答内容がズレてるかもしれません(http://d.hatena.ne.jp/tt_clown/20100513/1273746825#c 参照).「C++ は難しいから」と言う定説 - Life like a clown に付いたコメントへの…

イテレータの比較

プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集 - ZDNet Japan の中の「ループを使わずに配列の順序を逆にする。」と言う問題で,「再帰を使って記述しろ」と言う意味なのかなぁと以下のようなコードを思いついたのですが,ここで一つ…

とある C++ の魔導書

本の虫: 我々はプログラミング雑誌を創刊す http://slashdot.jp/developers/10/03/01/0310246.shtml ひょんな事から雑誌に記事を書く機会を頂きました.今回は,その宣伝を兼ねてイントロ的な何かを.創刊号は C++ オンリーだそうです.「無謀のキワミ」と言…

branch と leaf の分け方

メモ.あるディレクトリで複数のプログラムを実行するので実行時のパスを“ディレクトリ (branch)”と“プログラム名 (leaf)”に分けようと思ったのですが,そう言えば branch と leaf の分け方ってどうするのが一般的なのだろうと疑問に思いました(最後がファ…

クラス設計メモ

機能をどうクラスに分けるかについて,C++ を触りだした頃からの意識の変遷のメモ.特に何かの根拠があると言う訳ではなく,私が(特に C++ を触りだした初期の頃に)感じていた事です.「ある機能を実現する際に何個のクラスを出現させても良いか(使用者に…

エラー通知方法の古今東西

ちょっと前に,エラー通知の方法について一部界隈で盛り上がっていました.それを見てるうちに,そう言えばエラー通知方法ってあまり意識した事ないなと感じたので,ここで一度纏めてみます.尚,以下は C 〜 C++ を対象として記述しているので,他言語だと…

どういう場面で new を使うか?

先ほど Twitter において new 談義で花が咲いていたのですが,この際に「どういう場面で new を使うべきなのだろう?」と,ふと疑問に思いました.そこで,今回は「new を使う場面」を挙げてみようと思います.尚,ほとんど何も分からないまま書くので誰かの…

Hello, wonderful logging world!

この糞のような,素晴らしき(デバッグ)人生. と言う程でもないのですが,少し真面目に(デバッグ)ログの残し方について学習します.「えーマジ Logger 知らないの!?Logger 知らないで許されるのは小学生までだよね!」と言われそうですが,「最近の小…

ストリームから読み込んで STL コンテナに格納する

今まで,std::istream から std::string 辺りに一括で読み込む関数を適当に書いていたのですが,これを少し真面目に実装してみます.最初は,std::getline(in, s, char_traits::eof()) とかすれば良いのかなと思ったのですが,delim (第 3 引数)は char 型…

TrueType フォント名を取得する

TrueType フォント名を取得する必要があったので作成してみました.今回必要だったのは,(ASCII での)フォント名とフォント・ファイル名(*.ttf)のマッピング,および日本語でのフォント名と ASCII でのフォント名のマッピングでした.尚,コードは FontF…

複数の値を一つの変数に纏める関数 combine とメタ関数 combineN_

様々なファイルのフォーマット解析をしていると,ファイルタイプの識別用などの理由で「マジックナンバー」が現れる事があります.これらのマジックナンバーは実は文字列である事が多く(例えば,*.bmp のマジックナンバーは 0x424D == {'B', 'M'},*.gif の…

静的配列の要素数を取得する構文

Boost 勉強会に行く途中の新幹線で C++TT を読み返していて気付いた話題.引数に配列を取る場合,下記のように配列の先頭ポインタと要素数を指定する形にする事が多いと思います. template <class T> void put_element(const T* p, std::size_t n) { ... } これに対</class>…

Boost 勉強会メモ

感想 今更ですが更新.まずは,皆様ありがとうございました.周り全部はじめましてなせいもあって,あまりしゃべれませんでしたが,次があればもう少ししゃべっていこうと思います.自分の発表に関しては,内容どうこうよりも詰まりすぎとかそっちの方で残念…