Befungeインタプリタ in C++

C++の練習を兼ねて2次元変態言語Befungeのインタプリタを書いてみた.

VC++ 2005 Expressでコンパイルしたが末尾呼び出しを最適化してくれないので(例外とかのせい?)スタックオーバーフローで落ちることがある.次のサイトのテストプログラムなどをいくつか試してみた.しかし規格があまり厳密でないのと,そもそも複雑な作業には力が入ってない言語なので,複雑なベンチマークやテストで誤りを見つけることが難しい(誤りが見つかるような複雑なプログラムを実行させると仕様の解釈の差が出たり).次のサイトで拾ってきたQuineを実行させたいんだができてない.

本当は(初歩的な)コンパイラに挑戦したかったのだが,「コンパイラを書きにくいように設計した」だけあって自己修正コードが可能と知って諦めた.昔のVBみたいにバイトコードインタプリタをそのまま含んでいるものなら何とかなりそうだが,それでは空しいな.
Boostや,こないだ買ってみたEffective C++で解説されている知識等は使う局面がなく,ほぼ単純作業であまりよい練習にはならなかった.無駄なコードも多く,本当のことを言えば人に見せる出来ではない.
追記: 「解釈する」という動詞は "interprete" でなく "interpret" らしいよ!!(ぉぃ
追記その2: '.'のところはこうしないと数として出力されない.

                    cout << static_cast<int>(n) << " ";

なお末尾の空白は出力しない処理系もあるらしい.thx > Plaさん,Amagiさん
追記その3: スタックに収める値の型はlongらしい.