タグ

C++に関するNEO-Gのブックマーク (19)

  • 水雲風 C++の相互参照クラスの定義

    相互参照のクラスをC++でどう定義するのか少々悩みました。 このままだとすぐ忘れそうなので簡単な例を使ったメモを書いておきます。 いまいち細かい部分をよくわかってません。 ■クラス図 ※ NameA、NameBは名前空間です。 ObjectAはObjectBを持っています。 ObjectBはcreateObjectA()が呼ばれた時点でObjectAを作成し、保持します。 ObjectBがObjectAのオブジェクトそのものを持つと、ObjectAの中のObjectBの中のObjcetAの中のObjectBの中のObjectA、、、(以下、無限に続く)ができるのでポインタでしか持てません。 ObjectAとObjectBはお互いを参照します。 ■コード ObjectA.h #ifndef __OBJECT_A_H__ #define __OBJECT_A_H__ #include "Obj

    NEO-G
    NEO-G 2010/09/14
    相互参照めんどい
  • MSN Japan - ニュース, 天気, メール (Outlook, Hotmail), Bing検索, Skype

  • C++ 例外処理

    スマートなエラー処理 C++では、エラーの処理や管理機能として例外処理 (Exception) がサポートされています この機能を用いて、実行中の予期せぬエラーに備えます 例外は、try , throw , catch の3つのキーワードで構成されます まず、例外は明示的に例外を監視しなければなりません 例外が発生する可能性のあるプログラムコードを try ブロックとして { } で囲みます try { //例外が発生する可能性のあるプログラムコード } try ブロックないで例外が発生した場合 catch ステートメントでそれを受け取ります catch ステートメントが適切な例外を受け取り、用意された例外処理を行います catch (type arg) { //例外処理 } type arg には、関数の宣言のように型と変数名を指定します catch ブロックは発生した例外が、この型と一

    NEO-G
    NEO-G 2010/04/19
    例外は忘れやすいなぁ
  • C言語関係掲示板 過去ログ211

    開いたファイルの行数取得について教えてください。 投稿者---sato(2002/03/24 11:10:29) はじめまして,satoといいます。 早速ですが,ファイルを読み込んで,そのファイルの行数を取得したいの ですが,うまくいきません。 以前,VC++のコンソールで,以下のようにして取得できていたのですが, // 既にファイルポインタfp1でリードモードでファイルを開いている状態 line01=0; for(i=0;getc(fp1)!=EOF;i++){ line01=line01+1; // 行数 } BCC5.5のフリー版でこれをすると,指定したファイルの文字数を返してきます。 1文字で読みとって,EOFが来るまでカウントするので,当然と言えば 当然ですが,VCではうまくいっていました。(VCのバグ?) データは文字や数字など一定ではないので,fscanfで書式を指定すること

    NEO-G
    NEO-G 2010/04/19
    行数カウント。メモリにファイルの内容を取り込むのが早い未タイだね
  • 数奇な因子 » Blog Archive » stringstream を再利用するには

    C++ の STL の話。文字列を string に入れて istringstream のコンストラクタに文字列を与えると、そのインスタンスを標準入出力からの入力のようにストリームとして扱えます(というか元からそれが目的か)。 string buf; getline(cin, buf); istringstream iss(buf); while( !iss.eof() ){ string s; iss >> s; cout << s << endl; } 一行に複数の入力があるときはこれがとても便利。でも今までは、上の変数 iss は上のように使用したらそれっきり再利用できず、別の文字列を同様にストリームにしたいときは新しく istringstream 型の変数を用意してました。同じ変数に新しい文字列を与えてまた同じ変数を使いたいと常々思ってたんですが、どうやればいいのかさっぱり分からな

    NEO-G
    NEO-G 2010/03/26
    stringstreamの再利用の仕方
  • cplusplus.com - The C++ resources network

    Tutorials C++ Language: Learn this versatile and powerful programming language. Includes detailed explanations of pointers, functions, classes and templates, among others... Reference Description of the most important classes, functions and objects of the Standard Language Library, with descriptive fully-functional short programs as examples. Browse the C++ Reference Articles User-contributed arti

    NEO-G
    NEO-G 2010/03/26
    stream関係のリファレンス
  • ファイル入出力をごっちゃにしないために

    的には下に行くにつれてWindowsプラットフォームへの依存性が高くなります(例外もありますので注意)。以下に簡単な説明を述べておきます。 Cランタイムライブラリは、C言語で扱われていたファイル入出力の方法をサポートしますが、VC++等では表記の方法が少し変わっています。例えばCの関数であるopen関数の使用は推奨されなくなり、変わりに_open関数となっています(open関数でもコンパイルは出来ますがお勧めしません)。Cランタイムライブラリはさらに「低水準入出力関数」と「ストリーム入出力関数」に分かれます。低水準とストリームの違いは入出力に関して「バッファ」を扱うか否かで、ストリームの方がバッファを利用し高速に読み書きができます。バッファを使用せずOSを直接叩くのが低水準の方で、その分使い方が難しくなっています。 Cランタイムライブラリ(セキュリティ強化版)は、従来のランタイムライブ

    NEO-G
    NEO-G 2010/03/26
    getとgetlineの違い
  • strstream と stringstream

    strstream は文字列のストリーム,です. std::strstream を使ってデータを書き込む場合,「どんどん後ろへと追加していく」ことになります. operator でどんどん追加して,最後に str() で char* を取得できます. #include <strstream> #include <iostream> using namespace std; void hoge() { strstream ss; ss << "hoge" << "fuga" << "hoge" << ends; cout << ss.str() << endl; } 「なんで const char* じゃなくて char* なのか」,とか 「最後に std::ends を入れないと文字列が終端されない」, とか,内部の実装が見え隠れしてる感じのクラスでした. 当たり前に使ってたの

    NEO-G
    NEO-G 2010/03/26
    strstreamからstringstreamへ
  • iostream の仕組み

    (このコンテンツはメールマガジンの STL & iostream 入門に手を加えたものです。「 STL と iostream が使えるかのチェック」等はメールマガジンの方のページをご覧ください) STL がそうだったように、 iostream も非常に高い「カスタマイズ性」を持っています。「ないものは作ればいい」に強く応えてくれます。ですが、そのためにはまず iostream 全体の構造を知っておく必要があります。 iostream のクラスは、だいたい3つのグループに分かれます。これは「ストリームクラス」「フォーマットクラス」「バッファクラス」です。 これまで紹介してきた std::strstream などのクラスは、すべて最初の「ストリームクラス」に属するクラスです。普段使用する場合(つまりカスタマイズする必要がない場合)にはこのストリームクラスしかお世話にならないというわけです。 こ

    NEO-G
    NEO-G 2010/03/26
    iostreamの解説
  • typename は何故必要か

    まず、typename がどの様に使はれるのかを見てみる。よくあるのは、以下の二つの場合である。 template <typename T> // case 1 class Hoge { typename T::value_type v; // case 2 ... }; case 1 の typename は class で置き換へることが出来る。しかし、T には int 等の組込み型が代入されることもあるので、typename を使つた方が意味的に良いと言はれてゐる。 case 2 の typename は class で置き換へることが出来ない。class T::value_type とした場合、value_type は T の内部クラスであるという意味になる。 case 2 の様な typename は必要なさそうに見えるが省略することは出来ない。こんなもの無くても、T::valu

    NEO-G
    NEO-G 2010/03/15
    typnameに関する注意
  • flymake, C, C++, Python - 真 もわ爛漫

    http://d.hatena.ne.jp/nyaasan/20071216/p1 (in Japanese) http://d.hatena.ne.jp/nushio/20071201 (in Japanese) http://www.emacswiki.org/cgi-bin/wiki/PythonMode ; flymake ; http://d.hatena.ne.jp/nyaasan/20071216/p1 (in Japanese) ; http://d.hatena.ne.jp/nushio/20071201 (in Japanese) ; http://www.emacswiki.org/cgi-bin/wiki/PythonMode (require 'flymake) (defun flymake-show-and-sit () "Displays the error/

    flymake, C, C++, Python - 真 もわ爛漫
    NEO-G
    NEO-G 2010/03/13
    詳しい設定の仕方
  • Emacs flymakeでC++ソース編集中にコンパイルエラーを検出

    [ C++で開発 ] Emacs flymakeで編集中にコンパイルエラー検出 統合開発環境Eclipseは、C++開発でもソースを編集中にコンパイルエラーとなる箇所を検出します。これは大変うれしい機能ですが、なんとEmacsでも同様の機能があります。 Emacs 22でflymake.elが標準搭載されており、これを使ってEmacs上でソースコードを編集中にコンパイルエラー検出を実現します。 使用方法-Linux/GCC Linux/GCC上でのflymakeの使用方法を記述します。 簡単な使用方法 flymakeは、makeコマンドを呼び出して編集中のバッファのコンパイルエラーチェックを行います。makeの呼び出しは以下のようになるので、対応するMakefileを記述します。 make -s -C . CHK_SOURCES=hoge.cpp SYNTAX_CHECK_MODE=1 c

    NEO-G
    NEO-G 2010/03/13
    わりとそのままのflymake
  • 碧落 - Precompiled header

    プリコンパイル済みヘッダ 概要 各 C++ コンパイラの 「プリコンパイル済みヘッダ」の考え方について簡単に説明します。 引き合いに出すコンパイラは次のものです。 Microsoft Visual C++ 6.0 Microsoft Visual C++ 7.1 (.NET 2003) MinGW GNU C++ 3.4.2 Digital Mars C++ 8.4.4 なお記事中で各コンパイラを略記する時は、 列挙した順に VC6、VC7、GCC、DMC とします。 プリコンパイル済みヘッダとは 大規模なプロジェクトや既存の巨大なライブラリを使う場合、 各ソースファイルには大量のヘッダファイルがインクルードされます。 プリコンパイル済みヘッダとは、 このインクルードする大量の「ヘッダファイル」を文字通り先にコンパイルしておき ソースのコンパイル時間を減らすために作るものです。 コンパイラ

  • gccのプリコンパイル済みヘッダ - kryozahiro’s diary

    昨日の続き。 gccのプリコンパイル済みヘッダ(PCH)がかなり速いことに気づいたけど、日語の資料が少ないので家のマニュアルを読んだ。結構複雑だったから下にメモしておく。 作り方 foo.hのプリコンパイル済みヘッダを作る場合、普通にコンパイルするように $ gcc foo.h とするとfoo.h.gchができる。完成。ヘッダを認識しない場合は-xオプションで指定すると良いみたい。 使い方 PCHを使いたいコードからfoo.hをインクルードするとき、条件が満たされた場合、自動的にPCHが使用される。条件は以下の通り。 foo.h.gchがサーチされること gccは#include "foo.h"を発見すると、サーチパスのディレクトリごとにfoo.h.gchを探した後でfoo.hを探す。foo.h.gchとfoo.hは同じディレクトリに無くてもかまわない。また、"foo.h.gchディレ

    gccのプリコンパイル済みヘッダ - kryozahiro’s diary
    NEO-G
    NEO-G 2010/03/12
    gccでもやっぱりあるんだね
  • Let’s use doxygen!

    はじめに プログラマには、ドキュメント、とくにプログラムの内部仕様書を書くのが苦手、 という人が多い。 その理由は明らかであって、そもそも、ソースコードに (バグも含めて)*1 すべての仕様が子細もらさず書かれているのに、なぜ、さらにそれと独立した仕様書が必要なのかと、 (半ば気で) 思ってしまうからである。 ソースコードと独立にメンテナンスをしなければならないような仕様書は、 いずれソースコードと整合性が取れなくなって、無意味ならまだしも、 かえって害をなす存在となり果てることもある、ということを、 彼らは経験的に理解しているのである。 (*1) Ruby の作者である、まつもとゆきひろ氏は、 その著者『オブジェクト指向スクリプト言語 Ruby』の中の「付録C Ruby 用語集」で、 次のように書いている: ドキュメント まつもとの苦手なもの。彼は普段から「ソースがドキュメントだ。

    NEO-G
    NEO-G 2010/03/09
    メモっておかないと絶対に忘れる
  • 【QuadrupleD】ワールド座標→スクリーン座標 - プログラミング覚え書き

  • emacs C++ 開発環境 link集 - niitsumaの日記

    emacsでc++開発を行うための情報を集めました。まとめをここでしています 以下それぞれのリンク Emacs で C 言語プログラミングを始める人へのイントロダクション 初心者向けdocment 以下の2項目が役立つ タグジャンプ ここで説明しているtagファイルの作成方法 $ find . -name "*.[chCH]" -print | etags - はubuntu7.10では動かなかった 関数名の補完入力がM-tabでできる タグジャンプはここで説明してるetagより後述のgtagの方が便利 Benjamin Rutt's Emacs C development tips (English) complieをする窓の大きさを小さめにする方法 インデントを自分好みにする方法 etagの使い方。Emacs で C 言語プログラミングを始める人へのイントロダクション よりも詳しく解説

    emacs C++ 開発環境 link集 - niitsumaの日記
  • https://www.jitu.org/~tko/doc-jp/cc-mode.html

  • EmacsのC++インデント設定

    デフォルトのスタイルを変更するには以下の方法があります。 ファイルを開いてから、毎回次のコマンドを実行する。 M-x c-set-style RET stroustrup RET c++-modeのときはellemtelスタイルを使用するように、.emacsに記述する。 ;; C++ style (add-hook 'c++-mode-hook '(lambda() (c-set-style "ellemtel"))) インデント操作 インデントを実施させるのには、次の3つのモードがあります。 自動インデントなし 半自動インデント 全自動インデント 1.は、インデント量はすべてユーザが明示的に空白やTABコードを入れて行います。 2.は、[TAB]キーを押した場合にはその行が、[C-j]による改行を実施した場合には次の行がインデントされます。 3.は、中括弧、セミコロン、コロン、改行などを

  • 1