>>172
c_str() は '\0' つきの文字列を返すのに対して、data() は '\0' がついていない配列を
返す(正確には size() バイト分のデータしか保証されないので、その後に '\0' がくる
ことは保証されない)という違いがある。

#たいていの実装では c_str() も data() も '\0' つきの配列を返してくるけど。