STLのstringについて質問です。

char型の非constアドレスを要求するCのライブラリ関数などに
このオブジェクトの持つバッファのアドレスを渡すにはどうしたらよいでしょうか。
data()のアドレスをキャストして無理やり渡してみたら書き込む事は出来たのですが、
保証されない動作になると思われるうえ、当然length()の値との整合性が取れなくなってます。

と書いたのを読み返してみたら、関数側がlengthの仕組みを認識出来ない以上無理な気がしてきた。
char型のバッファでワンクッション置くしか無いんでしょうか…