1、c_str() 是string的一个方法,返回指向const char的指针,该指针不能修改指向的内容。
2、为什么要用c_str()?
因为有些地方需要用char指针,比如以char指针作为形参的方法。
3、为什么可以用文本常量的字符串赋值给char指针,却不能用字符串变量赋值给char指针?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 char * cp1 = "hello"; // OK
2
3 string str = "hello";
4
5 cp1 = str; // Error,无法从“std::string”转换为“char *”
文本常量字符串赋值给char指针,做的事情如下:
a、为char指针分配内存;
b、为文本常量字符串分配内存;
c、将字符串首地址赋值给char指针。
文本常量字符串赋值给char指针,实际上这里的文本常量字符串表达的意义是首地址。
注意:与文本常量对应的是具名常量。