Let's start Scheme

2006-11-17

boost::spirit::file_iterator

せっかくだから連投(いつまでこのペースが持つか)
spiritを使っていてファイルの読み込みをどうしようか迷った。
今まではとりあえずこんな感じにしていた。

ifstream ifs("filename");
string s;
s.assign(istreambuf_iterator<char>(ifs), istreambuf_iterator<char>());
parse_info<> r = parse(s.begin(), s.end(), grammar());

しかし、これではあまりにもなんだかなぁ感が拭えなかったが、
spiritにはfile_iteratorなるものが用意されているらしく、
こんな書き方ができた。

file_iterator<> first("filename");
file_iterator<> last = first.make_end();
parse_info<> r = parse(first, last, grammar());

減った行数としては1行だけど、ちょっとスマートに書けてる感じがする。

blogに移行したら、mixiの日記が消えてしまった。
ああ、レシピの備忘録が・・・(つД`)

No comments:

Post a Comment