读书人

关于string 跟 char * 区别

发布时间: 2012-07-16 15:44:59 作者: rapoo

关于string 和 char * 区别
string 和 char * 两者的区别是什么 ? 什么时候用string好? 什么时候用 char * 合适? 什么时候同时都能用?
请高手解答 谢谢

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

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

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

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


以上只是我的一些见解,有什么不合适之处,还请出。谢谢!
[解决办法]
string是个类,封装了好多方法,在对效率不是很高的情况下是很好的选择,char* 是字符串指针,效率比string高
[解决办法]
string代替char*也好,vector代替数组也好,都不是必须要这样的
实际上用stl的东西还是要谨慎些,很多东西必须要注意而不是简单替换
如果对stl一知半解,就简单用vector代替数组,string代替char*,你会发现你的程序慢的跟牛一样。。。
[解决办法]

探讨
那用STL的东西 主要的优势是什么? 处理数据会方便点吗? STL不是自带一些函数的吗


引用:

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

[解决办法]
char*是最早的处理字符串的方法,C里只有这种
string是对进行了封闭,是一个类,
你不闭事先知道要存的字符串的大小,系统会帮你做好这些工作,
而且提供了很多成员函数来帮你处理字符串,相对较方便,
不过,在性能上会有所开销,有时占用内存也较多(要存储类成员等)

如果仅仅存储一些简单的字符串,不进行很复杂的操作,
长度也变化不大,或者效率要求很高时,那就用char*
其他情况,推荐用string吧

读书人网 >C++

热点推荐