ちなみにどうでもよいことだが、実測するって言ってるから一応言っておくが
VC++のstring::lengthだったら内部で保持している長さを返すだけだよ・・・
これも一長一短で、パフォーマンスは良いかもしれないが、C風の操作と相性が悪い
というか、気を抜くと直ぐにバグる
あまりにも危険なので、俺はいつも文字列操作はvector<char>で行ってから
stringにぶち込んでる
正直微妙な仕様だと思うね
文字列の長さなんか瞬時に求まるのに、いちいちメンバ変数に持つ必要あるのかね