‘C++0x’ タグのついている投稿

コンテナの種類は問わないが、要素の型は限定したい。 このエントリーをはてなブックマークに追加

2012 年 9 月 27 日 木曜日

C++ で STL などによる任意のコンテナを引数に取る関数を実装する際、そのコンテナの種類は問わないものの、そのコンテナが持つ要素の型は限定したい、あるいは要素の型に応じて処理内容を切り替えたい、といったニーズがあると思います。

そのような場合、 C++11 であれば、 <type_traits> を利用します。

以下は、整数の型を要素に持つ任意のコンテナを受け取り、その全要素の合計を返す関数 calcSum() の実装例です。
(さらに…)

unorderd_map のキーに enum 型を使用する このエントリーをはてなブックマークに追加

2012 年 1 月 2 日 月曜日

新年明けましておめでとうございます。去年はちっとも儲からなかったので、今年は本腰入れて開発やって自力で稼げる事業を立ち上げたく、その準備を進めて参る所存でございます。どうぞ生暖かく見守っていただければと思います…。

さて、前回の記事でお見せした、 iconv のラッパークラスをテンプレートクラスに作り直す際、 <unorderd_map> を利用していて気づいたことの備忘録です。

(さらに…)

C++11 で Unicode プログラミングのススメ このエントリーをはてなブックマークに追加

2011 年 12 月 27 日 火曜日

このエントリは、C++11 Advent Calendar 2011 への参加記事です。

初心者表明を免罪符にするつもりは毛頭無いのですが、 C++0x/11 の学習、およびそれを用いた経験はまだまだ浅いため、内容的に拙い部分が多々あることを、あらかじめご容赦願いたいと思います m(_ _)m 。ていうか突っ込みだいかんげいでつ。

一応 ISO/IEC 14882:2011 の draft “n3242″ を参照しています。 GCC は 4.7 入れるの面倒だったので、動作確認できるものについては Ubuntu 11.10 に入っていた 4.6.1 を用いています。

Unicode に対応したリテラル

文字リテラルについてはドラフトの 2.14.3、文字列リテラルについては 2.14.5 に記述があります。
(さらに…)

Boost.Regex の ICU 拡張と char32_t は相性がいいかも? このエントリーをはてなブックマークに追加

2011 年 9 月 21 日 水曜日

なんとなく Virtual Box から利用している Ubuntu のアップグレードなどをして、そこからなんとなく「やっぱり Long Time Release 版の Ubuntu もテスト環境に持っておきたいよなぁ」などと思いつつ Virtual Box ディスクイメージを追加でこさえて、 Boost ライブラリのセットアップなどもしつつ動作チェックも兼ねて昔書いた記事なんぞを掘り起こしておりましたら、そこに書かれた内容に関連して、そういえば Boost.Regex も ICU ライブラリと組み合わせれば Unicode に対応できたはずだよなぁなどということが気になりだしてしまいまして、いろいろ試しているうちに、以下のようなサンプルコードが問題なく動作してしまうことを発見してしまったのでメモしておこうかと思った次第なのであります。ああ、なんだかこちらのブログも口調が個人ブログや普段の Twitter とかでのそれに似てきてしまいました (^_^;A
(さらに…)

Boost.勉強会 #4 に行ってきました。 このエントリーをはてなブックマークに追加

2011 年 2 月 26 日 土曜日

今回も必死こいてメモ執りましたよ。終盤力尽きたけど orz

しかしさすがにこの年で一日通しはキツいっすなぁ…。

UTF-8 もイマイチだが… このエントリーをはてなブックマークに追加

2010 年 9 月 22 日 水曜日

UTF-32 が内部文字列に使えないことがわかったので、 UTF-8 を内部文字列に使用するというルールで libiconv によるエンコーディング操作と Boost.Regex による正規表現の両方を同時に試すサンプルを作成してみました。

Makefile は作ってません\(^O^)/。試してみたい人は頑張ってコンパイルしてねw

$ g++ -std=c++0x -o regex-test regex-test.cpp EncodeString.cpp -lboost_regex

まともな環境 (Linux + GCC4.5 とか) なら上記コマンドで通るはず。libiconv を (glibc に上書きする形で) インストールしている場合は -liconv を末尾に入れる必要があるかも。そして MinGW を使う場合は更にもう一工夫必要かも (((;/^^)/
(さらに…)

char32_t だと regex が使えない このエントリーをはてなブックマークに追加

2010 年 9 月 22 日 水曜日

C++0x では UCS に対応し、専用の型やリテラルの記法が導入されました。その関係で、以下の点について調査を行っていました。

  1. C++0x で UCS を UTF-32 として扱う型 char32_t, u32string およびリテラル U"..." と、 libiconv の UCS-4-INTERNAL との間に互換性はあるか。
  2. C++0x で新たに追加された正規表現ライブラリ <regex> は利用可能か。
  3. <regex> が利用できない場合、 Boost.Regex を用いて UTF-32 文字列を処理することは可能か。

これらの調査は、すべて otoco のコアデータを扱うプログラム内で内部文字列に UTF-32 を採用することを前提としたものでした。
(さらに…)

Boost.勉強会 #2 に参加しました。 このエントリーをはてなブックマークに追加

2010 年 9 月 12 日 日曜日

実に楽しいイベントでした。 5時間ほぼぶっ通しだったのでさすがにくたびれましたが… (^_^;A

自分なりにメモしたノートを公開していますので、よかったら復習にご活用ください。かなり荒いメモですが…。
(さらに…)

MinGW に GCC 4.4.0 を導入する このエントリーをはてなブックマークに追加

2010 年 8 月 31 日 火曜日

otoco のコアデータの仕様がだいぶ形になってきたので、いよいよ実装を開始しました。本当はメインマシンに Linux 環境を整え直してそっちで開発を進めたいのですが、現状お金をもらってメインでやらせて頂いている仕事が Windows 環境での開発なので、並行して作業を行いやすいよう、 Windows 向けのバイナリを生成する環境として検討している MinGW を導入し、とりあえずはこちらで開発を進めてみることにしました。
(さらに…)