string 和 char *两者的区别是什么 ?什么时候用string好? 什么时候用 char * 合适?什么时候同时都能用?

A:

区别主要是:
string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。
char *的内存管理由用户自己处理,很容易出现内存不足的问题。

当我们要存一个串,但是不知道其他需要多少内存时, 用string来处理就最好不过了。
当你知道了存储的内存的时候,可以用char *,但是不如用string的好,用指针总会有
隐患。

用string还可以使用各种成员函数来处理串的每一个字符,方便处理。
用char *处理串,就不如string的方便了,没有相应的函数来直接调用,而是要自己编
写函数来完成串的处理,而且处理过程中用指针还很容易出现内存问题。

我建议尽量使用string,不用char*;
尽量使用vector(关联数组),不用数组;
尽量使用迭代器,而不用指针。

B:

string这个是STL里的一个容器,操作字符串非常方便;
char *是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配,堆得话就要你手动释放了。
C++的话,感觉用string比较合适,当然如果数据比较简单的话用char *也可以的

但是使用string的时候一定要注意构造和拷贝以及析构带来的性能开销,尽可能的减少构造,能使用引用的地方尽量用引用,减少不必要的构造

C:

区别主要是:
string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。
char *的内存管理由用户自己处理,很容易出现内存不足的问题。

当我们要存一个串,但是不知道其他需要多少内存时, 用string来处理就最好不过了。
当你知道了存储的内存的时候,可以用char *,但是不如用string的好,用指针总会有
隐患。

用string还可以使用各种成……

D:

string代替char*也好,vector代替数组也好,都不是必须要这样的
实际上用stl的东西还是要谨慎些,很多东西必须要注意而不是简单替换
如果对stl一知半解,就简单用vector代替数组,string代替char*,你会发现你的程序慢的跟牛一样。。。

E:

STL是标准库,内部对各种容器和相应的函数进行了封装。
优点是已经封装好,可以直接使用,且不用进行内存管理,其内部自己实现内存的申请与释放。不易出错。
缺点是其内部申请的内存要大于你要使用的内存,原因是便于数据的动态扩展,并且不同容器对内存的管理策略也不尽相同。完成同样的一个任务可能会有多种方式,在不了解内部实现的情况下,不一定能够使用最有效率的方法完成任务。
所以,在已知大小的情况下使用char*或charp[]比较好,在效率和内存使用上。
在未知长度,并且总体上并不会占用很多内存,对效率要求不高,或者没有限制内存与效率的情况下使用string。

原文地址:https://www.cnblogs.com/GODYCA/p/2851923.html