请问 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();