zoukankan      html  css  js  c++  java
  • 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 << "
    p2 = "<<p2 <<endl; 
    21     printf("p1 = %p 
     p2 = %p 
    ",p1,p2);
    22     return 0;
    23 }

     结果如下:                         编译器gcc4.4.7 centos6.5  

    从使用效果上可以初步判断一样。

    2. 查看源代码,如下图:

     

    目前看,还是有不同的, _res 的赋值不同。   但是_Base::data() 是什么? _Base 这个类不知道怎么找,待更新。

    有知道的小伙伴欢迎评论,指点;

  • 相关阅读:
    简易版Spring Ioc (转载)
    网站策划:网站用户需求分析
    js实现树形菜单
    js实现滑动门效果
    HTML的DOM对象的nodeName
    javascript实现页面悬浮导航
    jQuery EasyUI 窗口 – 创建简单窗口
    Exceptions
    Java Cookbook-Date and Times
    表单属性深入
  • 原文地址:https://www.cnblogs.com/csun/p/6657138.html
Copyright © 2011-2022 走看看