首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教 const char * , const char , string , char , string.c_str() 之间是什么关系

2012-02-19 
请问 const char *, const char , string , char , string.c_str() 之间是什么关系?请问constchar*,constc

请问 const char * , const char , string , char , string.c_str() 之间是什么关系?
请问   const   char   *     ,   const   char   ,   string   ,   char   ,   string.c_str()  

这几个之间是什么关系?什么情况能相互赋值?

[解决办法]
const用于修饰对应对象的访问属性。
const char* p:p对应的地址中的内容用char*来解释;该指针在有效域中不能也无法改变指向的内存空间的内容,除非是采用了强制类型转换。其经常用于传递只读的C风格的字符串。比如库函数memcpy,strcpy 等等。但p也可以指向可以用ASCII解释的二进制数据。

const char a:a本身一经定义就不可修改。一般用于定义字符产量。

string是STL提供的字符串操作封装类,其内部是一个模板的实例化别名。大多是这种形式:
typedef std::basic_string <char> string;
其内部重载了很多方法,使得可以很方便的用C风格字符串初始化构造、赋值等。
具体可参考相应平台的STL实现。

char就不用解释了吧!

string.c_str()返回一个string类内部维护的一块空间,该空间的内容是字符串的内容加上\0。
一般通过该方法可以得到一个等价的C风格字符串。其引用的空间是string来管理的,因此直接修改该指针的内容往往达不到调用者的真正意图。该方法常常用于得到一个C风格的字符串,来和比较老的C风格代码交互,或者保持兼容。
[解决办法]
const char * 指向常量字符串的指针

eg.

const char * p = "abc ";


const char 指向常量字符的指针

eg.

const char c = 'c ';


string


stl对字符传的封装类

string sz = "abc ";


char

字符 - -!

char c = 'c ';


string.c_str();

从string 中得到 const char*


string sz = "abc ";
const char* p = sz.c_str();

热点排行