c_str():生成一个const char*指针,指向以空字符终止的数组。
#include<iostream> #include<string> #include<cstring>//需要包含cstring的字符串 using namespace std; int main() { const char *strC; string strS = "1234"; strC = strS.c_str(); cout << strC << endl; strS = "abcde"; cout << strC << endl; cin.get(); return 0; }
效果:
上面如果继续用strC指针的话,导致的错误将是不可想象的。就如:1234变为abcd
其实上面的c = s.c_str(); 不是一个好习惯。既然strc指针指向的内容容易失效,我们就应该按照上面的方法,那怎么把数据复制出来呢?
#include<iostream> #include<string> #include<cstring>//需要包含cstring的字符串 using namespace std; int main() { string strS = "1234"; int iLen = strS.size() + 1;//size不包含最后的空字符,所以要+1 char *strC = new char[iLen]; strcpy_s(strC, iLen,strS.c_str()); cout << strC << endl; strS = "abcde"; cout << strC << endl; delete[]strC;//删除自定义数组 cin.get(); return 0; }
效果: