问题:在 class 的构造函数中,如果我们在类中初始化了 char * 类型,在调用构造函数时,如果直接传入字符串( string )类型,编译器会提出如下警告:
想要消除这个警告,就需要将 string 类型的变量转换成 char * 类型。
c_str() 函数可以将 const string* 类型 转化为 const char* 类型
头文件:#include<cstring>
c_str()就是将C++的string转化为C的字符串数组,c_str()生成一个const char *指针,指向字符串的首地址。
c_str() 这个函数转换后返回的是一个临时指针,不能对其进行操作。所以因为这个数据是临时的,所以当有一个改变这些数据的成员函数被调用后,该数据就会改变失效。
因此要么直接将这个数据应用或输出,要么把它的数据用 strcpy() 函数复制到自己可以管理的内存中。
代码:
#include<iostream>
#include<cstring>
using namespace std;int main() {char ptr[7];string s = "abc123";strcpy(ptr, s.c_str());cout << "s改变前ptr为:" << ptr << endl;s = "66666";cout << "s改变后ptr为:" << ptr << endl;return 0;
}
输出: