Seasons.NET

ちょっとした技術ブログです

Boost

Boostインストーラーvs2008対応

BoostPro ComputingでダウンロードできるインストーラーがVS2008に対応したみたいですね。

boostバイナリ配布所みつけた〜

boost - PukiWiki vc8,vc9用でそれぞれビルドされているものが配布されています。

lexical_castが例外を投げる件

ふんふん♪とBYTEキャストをlexical_castで行うと例外を投げてくれるというナイスっぷり。 内部で使われているstringstreamでも同様のテストを行いましたが、アスキーコードに 変換されてしまうため、どうもその時に変換できなくて例外っぽいです。 なので、i…

remove_ifで一気に消す

ベクタの要素を消すときにremove_ifで一致するものを消したくなります。 そんな時は関数オブジェクトを用意して、remove_ifを呼んで消すと便利です。 class Hoge { private: int life_; public: Hoge(int life) : life_(life) { } int GetLife( void ) const…

boost::tokenizerを使うときの注意。

以下のクラスを作って、文字列のパースした状態を保存しておきたいと思った際に、 うっかりtokenizerに渡す文字列は、shared_ptr管理かメンバ変数で持たせるかの いずれかにしておかないと大変な事になります。というのも tok = boost::shared_ptr< CsvTok >…

BOOST_AUTO_TEST入門

BOOSTのユニットテストは、手軽で便利だけど、やはりsuiteを作って addしないといけないので、これが面倒。気軽さがない。でも、そんな人の為にAUTO_TESTというものがあります。 BOOST_AUTO_TEST_CASEを追加し、次々とテストを追加していけばOKです。 非常に…

BOOST_STATIC_CONSTANT

クラスにconstなメンバを持たせたい時ってありますよね。 そんなときは、BOOST_STATIC_CONSTANTを使うと以下のように書けます。 class Hoge { public: typedef bool Bool; BOOST_STATIC_CONSTANT( Bool , flag = false ); }; int _tmain(int argc, TCHAR* ar…

boost::crcを文字列で取得したい。

checksum()で受け取るデータを文字列で受け取りたかったので、 formatを用いて、取得するサンプルを書いてみた。もっとうまい方法があれば、ご教授願います。 /* -------------------------------------------------------------------------------- */ /** …

boost1-35ビルド+VS2008

.\tools\build\v2\user-config.jam # 以下追加 using msvc : 9.0 ; bjamビルド bjam --toolset=msvc-9.0 --prefix=c:\boost --build-type=complete --stagedir=. stage install トータルで約8GB位になるのでHDD容量注意。

2008年3月31日

Version 1.35.0 1.35が追加されました。

パス操作で便利なnormalize

fs::path p( fs::current_path()/"data/" ); // //=> カレントパス/data std::string d("../hoge"); p.append( d.begin() , d.end() ); //=> カレントパス/hoge p.normalize(); もはや、rubyのpathnameみたいっすね。

toupperとtolower

文字列は、文字の集合と考えればこう出来る。 _strlwr_sを使ったんだけど、期待した動きをしない。 文字列を渡しても、ASSERT()に引っかかってまともに動かないので、一旦保留。 void tolower( std::string& inStr ) { BOOST_FOREACH( char& c , inStr ) { c…

ファイルの拡張子を取得するには?

// 拡張子があるファイルを処理するという条件が成り立つ時 boost::filesystem::path p("C:\\hoge.txt"); std::string ret; extension = p.leaf().substr( p.leaf().rfind('.') ); cout << extension.data() << endl;

シングルトン + Boost::Shared_Ptr

こうしておけば、シングルトンの破棄もスマートポインタまかせ。 1 2 class SingleTon 3 { 4 private: 5 SingleTon() {} 6 static boost::shared_ptr<SingleTon> me; 7 8 public: 9 ~SingleTon() 10 { 11 cout << "Delete SingleTon" << endl; 12 } 13 static SingleTon</singleton>…

Boostインストーラー for VC7,8

仕事で久々に使うからインストール。 Boost Consulting - Free Downloads VC++使いならここからインストーラー落としてインストールすると楽ですね。

Boost 1.34リリース

さっそくVS2005でトライしてみなければ。 SourceForge.net: Files Install & Build : インストールと構築 VCの人なら(自分とか) bjam --toolset=msvc VS2005のプロンプトで起動したプロンプトから、 boostインストールフォルダに、bjam.exeを入れて、上記コ…

Boost.python

ここに纏めていく予定。 Boost.Python

boost入れる時の自分メモ依存パッケージicu-3.6-4.i386.rpm libicu-3.6-4.i386.rpm libicu-devel-3.6-4.i386.rpm Regexで必要といわれたけど、まだdisableだ・・・調べ中。