タグ

ブックマーク / www.s34.co.jp (4)

  • 株式会社エス・スリー・フォー » sizeofの不思議

    sizeofの不思議 はじめに Cではsizeofによって構造体がメモリ上で占める大きさ(バイト数)を知ることができます。 struct s{ int x; int y; }; ... cout << sizeof(s) << endl; 僕の愛用する処理系、Visual C++ 6.0では 8が得られました。intひとつにつき4byteを消費するからでしょう。 それではC++でのclassの大きさはどうでしょう。内包するメンバ変数それぞれの占めるバイト数の総和になるのでしょうか。 class c { int x; int y; }; ... cout << sizeof(c) << endl; 答は…やはり 8 です。でもね、C++ではいつもこうなるとは限らないのですよ。 「C++はCよりデカい」と言われることがあります。その理由のひとつがここに明らかになります。 仮想関数 上記clas

    tyru
    tyru 2010/03/31
  • C/C++ Technical Documents

    C++ 寄稿記事 επιστημη 氏から寄稿していただいた、開発者の方々にお役に立つテクニカルドキュメントです。Articles、References、Miscelaneousに分かれて説明しています。初心者の方からプロの方まで役に立つ読み物と資料集です。是非、開発のお役にお立て下さい。 Articles: 読み物 References: 資料集 Miscelaneous: 番外編

  • C++の新しいキャスト

    C++の新しいキャスト 従来のキャストの問題点 異なる型への変換において、C/C++ではキャストが用いられます。 // intからlongへのキャスト int ival; int lval = (long)ival; ご存知のとおり、キャストは非常に危険です。 来ならば型の不一致によるコンパイルエラーをねじ伏せるのですから。 キャストの使われ方(意味)は、大きく3種(型変換/型変更/const外し)に分類されます。 型変換 // int から double へ int ival; double dval = (double)ival; 型変更 // long から int* へ long lval; int* iptr = (int*)lval; const外し // const int* から int* へ const int* ciptr; int* iptr = (int*)cip

    tyru
    tyru 2009/06/01
  • 株式会社エス・スリー・フォー » 正規表現ライブラリ ‘Boost Regex++’ の使い方

    正規表現ライブラリ ‘Boost Regex++’ の使い方 ‘webを介したプログラムの実行’というアプリケーションの新しい形態が現れ、perl,pythonなどに代表されるスクリプト言語がよく利用されるようになりました。スクリプト言語の多くはテキストすなわち文字列を扱うのを得意としています。 一方C++は文字列を扱うのがあまり得意ではありません。 最近になってようやく文字列を表現するクラスstd::basic_string が標準ライブラリに組み入れられました。 これによって文字列操作を頻繁に行い、かつ移植性の高いアプリケーションの実装がとてもやりやすくなりました。 しかしながら標準の文字列を手に入れたC++でもperlなどのスクリプト言語にかなわないことの一つが’正規表現(regular expression)’です。 たとえばWebの自動巡回を行うアプリケーションを考えてみましょう

  • 1