構文解析においては生の文字列のほうがずっとスマートに書けると思う。
ここで std:string を使う利点はほとんど無い気がする。std::istream ならともかく。