首页 > 代码库 > string类的data() 和c_str()区别
string类的data() 和c_str()区别
1、 首先想到的就是代码测试下(百度之后的)
1 #include <string> 2 #include <iostream> 3 #include <string.h> 4 #include <stdio.h> 5 6 using namespace std; 7 8 int main() 9 { 10 string s = "123 456"; 11 size_t l1 = s.length(); 12 size_t l2 = s.size(); 13 const char* p1 = s.data(); 14 const char* p2 = s.c_str(); 15 cout << l1 <<" " << l2 << " "<< p1 << " " << p2 << " " <<endl; 16 cout <<" sizeof( p1 )" << sizeof( p1 ) <<endl; 17 cout << " strlen( p1 ) " << strlen(p1) <<endl; 18 cout <<" sizeof( p2 )" << sizeof( p2 ) <<endl; 19 cout << " strlen( p2 ) " << strlen(p2) <<endl; 20 cout << "p1 = " << p1 << "\np2 = "<<p2 <<endl; 21 printf("p1 = %p \n p2 = %p \n",p1,p2); 22 return 0; 23 }
结果如下: 编译器gcc4.4.7 centos6.5
从使用效果上可以初步判断一样。
2. 查看源代码,如下图:
目前看,还是有不同的, _res 的赋值不同。 但是_Base::data() 是什么? _Base 这个类不知道怎么找,待更新。
有知道的小伙伴欢迎评论,指点;
string类的data() 和c_str()区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。