string的data()和c_str()有什么区别?
搜了之前的帖子,都说data返回字符数组,不带\0,c_str带\0。
#include <iostream> #include <string> using namespace std; void main() { string s("012345"); const char *p1=new char[10]; const char *p2=new char[10]; p1=s.c_str(); p2=s.data(); cout<<p1<<endl; cout<<p2<<endl; }
二者效果一样,假如data返回的不带\0的话,那么输出p1的时候不会一直输出下去么?
==============================
这两个是一样的
ps:LZ内存泄露了,那两个new没有用
=====================
c_str必然带‘\0’
至于data要不要带'\0',这个标准没说
可以带也可以不带,就看编译器自己喜欢怎么实现了……