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',这个标准没说
可以带也可以不带,就看编译器自己喜欢怎么实现了……

浙公网安备 33010602011771号