dev

main.hpp

program を書く上で必要になりそうなものをまとめた header file 。 wmain.cpp のほうは内部の文字列処理をすべて wchar_t および std::wstring でやる場合。 http://github.com/januswel/cpplib/blob/master/header/main.hpp http://github.com/januswel/cp…

impltest

処理系の挙動を check するための code 群を cpplib repository につっこむことにした。 library じゃないんだけど形式知だしまぁ似たようなもんと言うことで一緒くたに。 std::bind2nd の check http://github.com/januswel/cpplib/blob/master/impltest/bi…

grep

sequence container を引数に取る関数を定義してしまったのでじゃあこれもという感じで。 http://github.com/januswel/cpplib/blob/master/header/algorithm.hpp http://github.com/januswel/cpplib/commit/ba15e77b2f0706e73cf30dd566b007a4292b1729 http:/…

algorithm と functional で

Visual Studio 2010 で reference な引数に std::bind2nd できるようになったのでうちの cpp library を と を使って書き直してみた。 http://github.com/januswel/cpplib/commit/5222ccf23ba3082b1ce44da90f9e93fa51d80765 http://github.com/januswel/cppl…

join, split

Perl や javascript でいうところの join と split を書いてみた。 http://github.com/januswel/cpplib/blob/master/header/typeconv.hpp http://github.com/januswel/cpplib/commit/e04a31543657f5e23c67ea4fbc4326a3ab093805 http://github.com/januswel/c…

Visual Studio 2010 Express

いつの間にかでてた -> http://www.microsoft.com/japan/msdn/vstudio/express/ 。とりあえず compiler だけ cmd.exe から使ってるんだけど vs9 で通らなかった以下の code がきちんと通るようになっていてちょっと感動した。 #include <algorithm> #include <functional> #include <iostream></iostream></functional></algorithm>…

pointer to overloaded function

最初どうするんだろうと思ったけど C では「関数の pointer 」型を宣言するのに戻り型と引数を指定していたし C++ compiler は signature でどの関数が呼ばれているかを判断しているわけなのでじゃあ signature を構成する引数と ( member function の場合 )…

pointer to member

念のためとかせっかくだからで全然意味が違ってきてしまうことに気付いたのでまとめ。ある class の member ( data member でも member function でもいい ) への pointer を取る場合、その関数の qualified-id ( global 名前空間を起点として名前空間や cla…

algorithm.hpp

ひょんなことから まわりの関数 ( http://www.cplusplus.com/reference/algorithm/ ) を使うようになってあー iterator という interface ですべて操作するわけかなるほどとか思ってたんだけど欲しいものがなかったので書いてみた。 http://github.com/janus…

getopt

C++ ぽく自分で書いてみた。 http://github.com/januswel/cpplib/blob/master/header/getopt.hpp http://github.com/januswel/cpplib/blob/master/sample/getopt/main.cpp けっこういい感じにはなったんだけど多分もう 2, 3 回 refactoring しそうな予感。

chain of responsibility

GoF design pattern で遊んでみよう第二弾 ( 第三弾なんだけど event は observer の変形なので実質 2 つめ ) 。あまり使い出がないと思いきや特定方面には思いっきり需要のある pattern でございます。 http://github.com/januswel/cpplib/blob/master/head…

event.hpp

いわゆる event driven なアレをアレするアレ。 observer pattern ( http://d.hatena.ne.jp/janus_wel/20100329/1269856344 ) の変形版、というほどのものでもなくて各 class や member の名前をそれっぽく変えて状態を保持する class ( observer pattern で…

C++ 基礎型一覧表

汎整数型って何を指してんだっけ ? というときに覗く表。 算術型 汎整数型 ( 整数型 ) 符号あり整数型 標準符号あり整数型 signed char short int int long int long long int 拡張符号あり整数型処理系定義 符号なし整数型標準符号なし整数型unsigned char …

observer pattern

GoF design pattern のアレ。 C++ でのわかりやすいまともな実装例が見つからなかったので自分で書いてみた。とりあえず wikipedia:Observer パターン や http://www.objectclub.jp/technicaldoc/pattern/observer を参考に名前はそのまま ( CamelCase な識…

enum にしょんぼり

id:faith_and_brave に C++0x の enum は基底型に汎整数型しか指定できないよ、と指摘されたので修正。ちょっと妄想の翼が暴走してしまったようで。ちなみに「はげます」 & 話術士禁止 play とか実はけっこうツライです、であってるかな ?ちょっと enum まわ…

hpp

そういや hpp って拡張子は C++ の header file て意味だよなと思って調べてみたら案外そうでもない意見もあってでもおれはせっかくだから C++ header file には hpp を選ぶぜ的なハナシ。既出意見はとりあえずわかりやすいとこで以下のみっつくらい ? 拡張…

global locale と finename

Windows で名前に ASCII characters じゃない文字を使っている file を扱う場合、 global locale を system の locale にしてやらないと意図通りの名前にならないというハナシ。 ja_JP.UTF-8 な locale を使っている andLinux だと global locale が C だろ…

mbstowcs, wcstombs

http://d.hatena.ne.jp/janus_wel/20100315/1268654296 の C 標準関数版。 // nwconv_c.hpp #ifndef NWCONV_C_HPP #define NWCONV_C_HPP #include <string> #include <vector> #include <cstdlib> #include "../../header/wexcept.hpp" #ifdef _MSC_VER # include <errno.h> #endif namespace u</errno.h></cstdlib></vector></string>…

codecvt

てなわけで ( http://d.hatena.ne.jp/janus_wel/20100313/1268483725 ) 実際に narrow character と wide character の変換をする code を書いてみた。つっても sample 的なものだとアレなので class としてまとめて使いやすくしたものを。てか codecvt face…

C++0x 規格書日本語訳

今なら C++98 読むよりゃ draft だけど C++0x の規格書読んだ方がいいだろうってことでカホカホ打っている感じ。http://github.com/januswel/Cxx0xISja完了してるところが偏りまくってるんだけど C++ の規格書を読む上で必要な語句が定義されているところを…

wchar_t

何のためにあるのかちょっとわからなくなってきたので調べてみた。とりあえず規格の最新の draft によると、 5 Type wchar_t is a distinct type whose values can represent distinct codes for all members of the largest extended character set specifi…

NRVO in VC++

どっちの option も非推奨な option "/Og" が暗黙的に指定されるという指摘があったのでちょっと修正。英語版を覗いてみると「非推奨」にあたるところが "deplicated" と書かれていたので後方互換のために残してあるだけで将来なくなりますよという意味での…

cl.exe /help

VC++ 2008 Express Edition のハナシ。そろそろ IDE 起動して「新規作成」 -> 「既存のコードからプロジェクトを作成」 を選択するのもイヤになってきたので cl.exe を直で使うようにしようと思って title の command で出てくる help ( 主に option 説明 ) …

char set/encoding of C++ source code

そういや C++ での非 ascii character の扱いはどうなってんのかなと思ってちょっと試してみたんだけど相変わらずダメっぽい。やりようがあるのかもしれないけど試して見た限りでは VC++ 2008 Express Edition が cp932 固定 ( utf-8 だと通る文字と通らない…

文字列から何かに変換する・何かから文字列に変換する

ここでいう「何か」は型のこと。いやそんなん stringstream かませばいいじゃんというのは正解というか大正解なんだけど stringstream は生成するにしてもその大きさにしてもけっこう「重い」し変換操作を一連の手続きとして閉じ込めてしまうことに意義があ…

C++ で関数から object をどう返すか

VC++ における NRVO について別 entry に書いた -> http://d.hatena.ne.jp/janus_wel/20100301/1267397791昨日同じような title で entry 書いたら ( http://d.hatena.ne.jp/janus_wel/20100221/1266766850 ) comment でいいことを教えてもらった ( http://d…

C++ で関数から文字列をどう返すか

めんどうかつうまい手が見つかりにくい問題なのでちょいと考察。パッと出てくるのは以下の 3 つなんだけど。 std::string object を new して pointer 返し std::string を値返し 関数を function object にして内部で std::string を持っておいてそれを参照…

C/C++ で redirection と pipeline を検知する方法

redirection 、リダイレクト ( ">" でつないで file に書き出し ) と pipeline 、パイプ ( "|" でつないで他の command に出力を渡す ) を C/C++ で検知する方法まとめ。以前使った記憶があるしたしか方法あったよなと思いつつ探したんだけど見つけるのに 2 …

basic_ios::rdbuf()

basic_istream や basic_ostream の親である basic_ios は title に書いた関数を持っているらしくこいつは何をするものかというと basic_ios object が保持している basic_streambuf object の getter / setter らしい。てことは前いってた標準入出力に関連…

binary file の header 読み書き

http://d.hatena.ne.jp/janus_wel/20100216/1266347871 でいってた header / footer を持った binary file の読み書きの header 部分をこんな方向でやる的な指針作りとしてちょいと書いてみた。まず header を扱うための構造体の定義と流し込むための 演算子…