string 和 char *两者的区别是什么 ?
来源:互联网 发布:mac版vmware fusion 编辑:程序博客网 时间:2024/05/21 00:17
string 和 char *两者的区别是什么 ?什么时候用string好? 什么时候用 char * 合适?什么时候同时都能用?
转载自GOD_YCA http://www.cnblogs.com/GODYCA/archive/2013/01/08/2851923.html
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。
- string 和 char *两者的区别是什么 ?
- string 和 char *两者的区别是什么 ?什么时候用string好? 什么时候用 char * 合适?什么时候同时都能用?
- string和char数组:两者之间的互相转换
- string[] args 和 string args[]两者的区别
- oracle的nvl和nvl2是什么函数,两者区别
- char *和String的区别
- Char和String的区别
- JSP是什么和/ASP是什么?JSP是什么?两者区别?
- oracle数据库中字段值的类型blob和clob是什么和两者的区别
- char类型和string类型的区别
- string和char*的区别以及const_cast<>()
- string和char*的区别以及const_cast<>()
- Java 中 char 和 String 的区别
- string、char*的区别和转换
- char 和 string 的简单区别
- C_string,string,char*的区别和联系
- 嵌入式开发和底层开发有什么区别两者的概念是什么
- Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
- Redis之十八 事务
- RecatNative环境配置
- fast-framework – 基于 JDK 8 实现的 Java Web MVC 框架
- eclipse查看类源码出现failed to create the part's controls的解决方法
- Java中native关键字
- string 和 char *两者的区别是什么 ?
- C语言字符串处理及内存管理函数
- HDU5831(水题,有一点容易忽略,导致一直WAWAWA)
- poj 2449
- Leetcode 274. H-Index (Medium) (cpp)
- Java的native关键字
- POJ 2155 Matrix
- 嵌入式开发第26天(信号、system V IPC、内存映射)
- 【NOIP提高】奇袭