C++ 中string和char* 的区别- Tsingke - 博客园
文章推薦指數: 80 %
1、定义:. string:string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便。
char*:char *是 ...
首页
新闻
博问
专区
闪存
班级
我的博客
我的园子
账号设置
简洁模式...
退出登录
注册
登录
Tsingke
--博观约取,厚积薄发
C++中string和char*的区别
C++中string和char*的区别
1、定义:
string:string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便。
char*:char*是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配,堆得话就要你手动释放了。
2、区别:
string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。
char*的内存管理由用户自己处理,很容易出现内存不足的问题。
当我们要存一个串,但是不知道其他需要多少内存时,用string来处理就最好不过了。
当你知道了存储的内存的时候,可以用char*,但是不如用string的好,用指针总会有隐患。
用string还可以使用各种成员函数来处理串的每一个字符,方便处理。
用char*处理串,就不如string的方便了,没有相应的函数来直接调用,而是要自己编写函数来完成串的处理,而且处理过程中用指针还很容易出现内存问题。
char*s="string"的内容是不可以改的;chars[10]="string"的内容是可以改的
3、注意:
当我们定义了一个string,就不能用scanf("%s",s)和printf("%s",s)输入输出。
主要是因为%s要求后面是对象的首地址
4、转化:
当string直接转化成constchar*时,可以通过两个函数c_str(),data成员函数,例如:
#include
但是我觉得这个还是挺麻烦的。
将char*转化成string,直接转化就可以。
就是注意输出的问题:
#include
延伸文章資訊
- 1CString與string、char*的區別和轉換 - 程式人生
string是C++標準庫(STL)中的型別,它是定義的一個類,定義在<string>標頭檔案中。裡面包含了對字串的各種常用操作,它較char*的優勢是內容可以動態拓展, ...
- 2C/C++ 字串比較的3種方法
int strcmp(const char * str1, const char * str2);. strcmp() 如果判斷兩字串相等的話會回傳0,這必須牢記因為很容易混 ...
- 3C/C++ - String 用法與心得完全攻略
一、String 簡介. string 是一個保存char 的序列容器,把字串的記憶體管理責任交由string 負責而不是programmer,減輕 ...
- 4(原創) char s[]字串和char *s字串有什麼差別? (C/C++) (C)
C語言有兩種字串宣告方式char s[]和char *s,兩者有什麼差異呢? ... 的s是一個pointer指向char,由於"Hello World"本身就是一個string literal...
- 5Difference between string and char[] types in C++
A char array is just that - an array of characters: ... A string is a class that contains a char ...