C++

UNICODEのファイルを作成する

C++

VCでUNICODEにするのは、プロジェクトの設定。 しかし、それではアプリの中がUNICODEで動作するようになるだけ。 その文字列をファイルに出力しようとしてもUNICODEにはならない。 はじめはそれがとても不思議な感じがしたが、いまではそっちのほうがしっく…

テンプレートの特殊化

C++

C++テンプレートテクニックを買ってお勉強。 テンプレートの特殊化を利用して、いままで使っていたライブラリを一部書き換え。 構築した部分は問題なく実装できたが、いままでやっていたことができなくなった・・・ どちらともいえない、どちらともいえない。 …

SQLiteを利用しやすいようにクラス化

C++

昨年末、隣席の人がEntier(Hitachiの組み込みDB)のライブラリを書いてた。 ちょいちょい見たり話をしたりしていたが、同じようなものを書くことになった。 もっとちゃんと聞いておけばよかった… 基本は、JavaのJDBCのクラスを参考。 class Connection; class…

SQLiteで引っかかったところ

C++

SQLを8年ぶりぐらいに書いた。 SQLite関係なく、ぜんぜん書けない。 PrimaryKeyを複数のカラムで指定する create table sample (id integer, age integer, name text, primary key(id, age) ) primary key を後でまとめて指定するとできる。 SQLiteでは、pr…

SQLiteデビュー

C++

いままで知ってはいたが、使うことがなかったのでとりあえず使ってみる。参考:SQLiteで組み込みDB体験 (1/3):CodeZine(コードジン) 参考の環境 SQLite 3.3.5 VisualStudio2005Express こちらは、環境 SQLite 3.6.14.2 VisualStudio2008ProfessionalEditi…

NaNは == では判定できないよ

C++

この間の続き。 Inf/NaNは計算の失敗時に発生する値。 この値がでるとそのあとの処理はうまくいかない。そのときに判定を間違えると面倒だよ。。 if( _finite(value) != 0 ) // Inf/NaNである Inf/NaNを判定するには、_finite を使うこと。 if( DEF_NaN == v…

数値計算はいろいろめんどう

C++

NaNやInfなどの特殊な値 http://exlight.net/devel/fp/value_class.html によると、 NaNはたくさん、InfとZeroはふたつ あると。 きちんと調べてみなければ。 こんなことあまり気にしたことがなかった。 いままでは、NaNが発生しないように計算させていたが、…

だれが一番はやいでしょうか?

C++

typedef std::complex<double> COMPLEX; COMPLEX plus_1(COMPLEX a, COMPLEX b) { return a + b; } COMPLEX plus_2(const COMPLEX& a, const COMPLEX& b) { return a + b; } COMPLEX plus_2_1(COMPLEX& a, COMPLEX& b) { return a + b; } COMPLEX plus_2_2(const COM</double>…

MATLABで外部プログラム開発

MATLABで外部プログラムを開発する場合は、CやFORTRANが利用できる。 DLLを作るような感じになるが、単純なDLLではない。 mexという形式でMATLAB上でコンパイルする。 mex Test.c なんてすると、 Test.mexw32 ファイルが生成されて、 lh = Test(rh0, rh1) み…

C++で、InfとNaN。

const double DEF_Zero = 0.0; // コンパイラエラーをごまかす const double DEF_Inf = 1.0/DEF_Zero; const double DEF_NaN = 0.0/DEF_Zero; 1.0/0.0 0.0/0.0 は、コンパイルで怒られる。 そのために、ひとつはさむ。何で定義されてないの?

assertをどこまで使ってよいか?

C++

assertを使って、事前条件チェックとかしてもリリース版でどうしても その値が来てしまったら、、、 結局エラー処理を書かなきゃいけない。 assertがあるから、条件クリアとはならない。 なら、assertは使わないほうがいいのか?

静的なコード分析

VisualStudio2005 の VisualC++2005でコード分析を使ってみる。 Visual C++ 2005 コード分析概要 http://msdn.microsoft.com/ja-jp/security/bb905844.aspx いくつか問題点を指摘された。 Debug版だけONしたけど、Release版でもONにしたほうがいいかな? 指…

C++0x

C++

これをどっかのサイトで見て、Clipしてたやつ http://www.pvv.org/~oma/cpp0x_aquadi_nov_2007.pdf ・right angle brackets std::vector> matrix; みたいなことができるみたい。 すっきり。

Boostの本買ったけど、、

C++

Boost C++をチューンアップする最先端ライブラリ忙しくて、あんまり読めてません。 もっとゆっくりと読みたい。Boostを使ってみたいけど、むずかしそう〜!って 思っている方、ちょっと本を読んでみましょう。 新しい世界が開けるかもしれません。いままであ…

boost::shared_ptr でポインタが有効かどうかを知りたいとき

C++

class hoge; boost::shared_ptr<hoge> p_hoge(new hoge); if( p_hoge.get() != NULL ) { } とか書いてたけど、 if( p_hoge ) { } でいいそうだ。 知らんかった。</hoge>

const地獄。

どっかのプロジェクトのソースを全面的に修正することになった。その原因は、const。 ひとつのクラスをきれいに修正して、constつけたりなんやかんや。そうすると、const地獄に・・・ 次から次に修正する必要が・・・ 結局1/3程度のファイルに修正が入った。 これ…

std::stringstream の初期化は clear() じゃない

std::stringstreamを使いまわす場合、初期化したいです。 clear() メソッドがいますが、初期化されません。 文字列を初期化するには、 str(""); と、しなければならない。いつも引っかかる… なにかいい覚え方はないか。