设为首页 加入收藏

TOP

string和char*的区别以及const_cast<>()
2015-11-21 01:36:07 来源: 作者: 【 】 浏览:5
Tags:string char 区别 以及 const_cast< >

首先,string是类,char*属于基本数据类型

其次,const_cast只能改变指针的const属性,而不能改变或者去掉本身的const属性

测试代码:

?

?

// memcpyTest.cpp : 定义控制台应用程序的入口点。   
//   
  
#include "stdafx.h"   
#include "string"   
  
using namespace  std;  
int _tmain(int argc, _TCHAR* argv[])  
{  
    string Str = "abcd";  
    char *pChar = "mmnddd";  
    //pChar[0]='j';                                     // 出现访问冲突异常   
  
    //char *pstr1 = Str.c_str();                        //类型异常   
    //const char *pstr1 = Str.c_str();    pstr1[0]='g'; //错误   
  
    char *pStr = const_cast(Str.c_str());        // 去掉const属性   
    pStr[0]='h';  
  
    char *pchar1 = const_cast(pChar);            // 去掉const属性   
    //pchar1[0]='e';                                    // 出现访问冲突异常,去不掉本身的const属性   
  
    //若想要去掉必须分配堆空间   
    char *pchar2 = new char[8];  
    //pchar2 = pChar;   
    //pchar2[0]= 'e';//这样也不行,只是指针指向了同一块内存区域,这块区域谁都不能动   
  
    memcpy(pchar2,pChar,sizeof(pchar2)*2);  
    pchar2[strlen(pChar)+1]='\0';  
    pchar2[0]='e';                                     //正确       
  
  
    return 0;  
      

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA 10041 Vito's Family (中.. 下一篇hdu 4081 Qin Shi Huang's Na..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: