c_str() 返回以最后一个指向null结束。
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
const char *ch;
string s = "abcdef";
ch = s.c_str();
cout<<ch<<endl;
s = "56789";
cout<<ch<<endl;
return 0;
}
[[email protected] ~]$ ./a.out
abcdef
56789
可看出ch改变了,这样使用不安全。最好的使用途径是 strcpy。
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
char *nch = new char[20];
const char *ch;
string s = "abcdef";
strcpy(nch,s.c_str());
cout<<nch<<endl;
s = "56789";
cout<<nch<<endl;
return 0;
}
[[email protected] ~]$ ./a.out
abcdef
abcdef
只有这样使用更安全。
时间: 2024-10-22 12:20:11