C++ 中string和char* 的区别- Tsingke - 博客园

文章推薦指數: 80 %
投票人數:10人

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 #include usingnamespacestd; intmain() { strings="xiaoming"; constchar*a=s.c_str();//去掉const会显示编译错误 constchar*b=s.data(); printf("a:[%s],b:[%s]\n",a,b); } 如果直接转化成char*也可以。

但是我觉得这个还是挺麻烦的。

将char*转化成string,直接转化就可以。

就是注意输出的问题: #include #include usingnamespacestd; intmain() { char*a="xiaoming"; strings; s=a; printf("%s\n",s.c_str()); }     posted@ 2019-12-2021:08  Tsingke  阅读(20430)  评论(0)  编辑  收藏  举报 刷新评论刷新页面返回顶部 Copyright©2022Tsingke Poweredby.NET6onKubernetes



請為這篇文章評分?