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号
浙公网安备 33010602011771号