C++で文字列のSplit

C++でtsvっぽいファイルを読みたいなあと思ったんですが、 どうも標準ライブラリにSplitをする関数がないみたいなので、 自分で書いてみた。 getline()で読み込んだ一行に対して処理してます。 #で始まる行はコメントとして無視してます。STLのコンテナのメ…

stringからchar*への変換。

メンバ関数のc_str()を使う。

排他的論理和をつかったオブジェクトの交換

x ^= y; y ^= x; x ^= y; という感じで、二変数の値を入れ替えるのに排他的論理和を使うと一時変数を使わなくていいのですが、オブジェクトでやってみるとどうなるのかなあと思ってやってみた。 class test_obj{ int i; public: test_obj(int a) {i = a;}; v…

配列

オブジェクトの配列も通常の配列と同様に宣言する。={..}の中でコンストラクタ関数を呼び出すことで初期化も可能。 コンストラクタ関数の引数が一つの時は引数を並べたものを渡せばいい class-name array-name[array-length] = {class-name(a1,a2..), ...}//…

:第三章 クラスの詳細

クラスの詳細。だんだんこう、C++って考えることが多くて大変! という気分になってきた。 オブジェクトの代入 myclass a,b; a = b; とすると、aにbがコピーされる。javaとかと違って変数が同じクラスを参照するわけではなく、配列なども含めたメンバ変数も…

第二章 クラスの概要

コンストラクタ、デストラクタ class-name(param-list); //コンストラクタ ~class-name(); //デストラクタ それぞれオブジェクトが作られたとき、破棄されるときに呼び出される。コンストラクタでmallocした変数を、デストラクタでfreeすれば幸せになれるみ…

二項係数

二項係数を求めるプログラムを、再帰を使ったのと、公式を使ったの二通りで作ってみた。 long product_n2k(long n,long k){ if (n == 0){ return 1; } else if (n == k) { return n; }else { return n * product_n2k(n - 1, k); } } long bi_coefficient(lon…

第一章 C++の概要

第一章で従来のC++と標準C++の違いが書いてあった。昔Hello, world!が動かなかったのって、古いコンパイラで標準C++の描き方していたんじゃないかという疑いが出てきた。あるいはcstdio.hを呼び出しつつcoutで出力しようとしていたとか。 メモ 標準ライブラ…

C++に手を付けてみる。

何の言語勉強しようと思ったけど、色々考えた結果、C++にしようときめた。「独習C++」購入。 C++は昔ちょっと勉強してみようと本を買ってみたけど、本の通りにHello, world!プログラムを入力したら何故か動かず、ふてくされて以来一度も手を付けなかった。 …

CtrlとCapsの入れ替えが上手くいかない

ホストOSがWindows、仮想化ソフトがVmware Player2.5.1、ゲストOSがUbuntu 8.04 Japaneseで、Ubuntu上でCtrlとCapsを入れ替えようと思ったけど、上手くいかなかった。 試したこと [システム]→[設定]→[キーボード]→[レイアウト]→[レイアウトのオプション]→[Ct…

久々にプログラム:環境準備

昔学校でやって以来。友達の話を聞いていたらまたちょっとやりたくなった。メインで使っているWindowsにプログラミング環境を構築するのも面倒な気がしたので、Vmware playerをインストールしてみる。UbuntuのVmware用イメージを http://www.ubuntulinux.jp/…