C++primer 第十二章,十三章经常出现 c_str() 函数,今天总结一下c_str()函数;
在说c_str()之前我么得说一说, char *s,s[]; 的区别;
char *s 代表指向s的一个字符指针。 我们并不能对s的内容进行写操作。只能进行读操作;
char s[100]; 代表一个字符数组,我们可以对字符数组进行读和写的操作;
char *c;
string s("chenjian");
c = s.c_str(); // s被析构了,在c_str() 执行完之后 s 被析构,因此c指向的内存变成垃圾内存;
cout << c << endl;
另外有一个代码:
char* c;
string s;
strcpy(c,s.c_str());
cout << c;
会报错,原因是我们需要对c申请存储空间;下面代码可以成功:
char *c = new char[100];
string s("chen");
strcpy(c,s.c_str);
cout << c;
用数组也是可以的;
char c[100];
string s("chenjan");
strcpy(c,s.c_str);
cout << c << endl;