请问string类的data()与c_str()的区别
有人说:
data只是返回原始数据序列,没有保证会用traits::eos(),或者说'\0'来作字符串结束.
c_str是标准的做法,返回的char* 一定指向一个合法的用'\0'终止的C兼容的字符串。
但我写了个测试,发现转换后的字符串末尾都有'\0',请问这两个成员函数到底有什么区别?应该在哪种场合下用哪一个?
string s("123456");
const char *p=s.c_str();
const char *q=s.data();
int d;
for(int i=0;i<=s.size();i++) {d=*(p+i);cout<<d<<endl;}//最后一次输出的是0.
cout<<endl;
for(int i=0;i<=s.size();i++) {d=*(q+i);cout<<d<<endl;}//最后一次输出的也是0.