string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便。
char *是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配,堆得话就要你手动释放了。
string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。
char *的内存管理由用户自己处理,很容易出现内存不足的问题。
char *s="string"的内容是不可以改的;char s[10]="string"的内容是可以改的
当 string 直接转化成 const char *时,可以通过两个函数c_str(),data成员函数,例如:
string s="xiaoming";
const char *a=s.c_str();//去掉const会显示编译错误
const char *b=s.data();
将*char 转化成string,直接转化就可以。就是注意输出的问题:
char *a="xiaoming";
string s;
s=a;
printf("%s\n",s.c_str());