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',这个标准没说

可以带也可以不带,就看编译器自己喜欢怎么实现了……

 

posted @ 2017-04-17 17:09  sky20080101  阅读(308)  评论(0)    收藏  举报