str3.c_str()
呼んでみぃ。文字列は正常だから。

ちなみに内部は、こうなってる。

union _Bxty
{ // storage for small buffer or pointer to larger one
 _Elem _Buf[_BUF_SIZE];
 _Elem *_Ptr;
} _Bx;