string和char*的区别以及const_cast<>()
2013-08-15 13:00
309 查看
首先,string是类,char*属于基本数据类型
其次,const_cast只能改变指针的const属性,而不能改变或者去掉本身的const属性
测试代码:
其次,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<char*>(Str.c_str()); // 去掉const属性 pStr[0]='h'; char *pchar1 = const_cast<char*>(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; }
相关文章推荐
- string和char*的区别以及const_cast<>()
- string和char*的区别以及const_cast<>()
- #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- C++Primer--->#include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- <string>与<string.h>以及<cstring>的区别
- 论#import和#include 以及#import "stdio.h"和#import<stdio.h>的区别
- <string> 与<string.h>、<cstring>的区别
- C++ #include <iostream> #include <iostream.h> #include <string.h>区别及作用
- c++11 使用c++风格的cast: static_cast<type>(expression) const_cast<type> dynamic_cast reinterpret_cast
- <string>和<string.h>两头文件区别
- 回调函数 typedef bool (*IsUsed)(const string &name,boost::shared_ptr<ShpGeometry> oneGeometry);
- #include<string>与#include<string.h>的区别
- <string> 与<string.h>、<cstring>的区别
- std::vector<std::string>::size_type和 int的区别
- #include <string> <string.h> <cstring> 三者的区别
- <leetcode系列> String to Integer (atoi) 以及atoi源码实现
- java泛型中<? super String>和<? extends String> 的区别
- 头文件<string.h>、<cstring>、<string>的区别
- #include<string>与#include<string.h>的区别