C++中char* 和string的区别是?

char*c;strings;我的理解是,c是一个指针,它指向一串字符的存储空间,但末尾程序不会自动添加'\0'标记。在使用s进行操作的时候,程序会自动帮我们处理s末尾的... char *c;
string s;
我的理解是,c是一个指针,它指向一串字符的存储空间,但末尾程序不会自动添加'\0'标记。在使用s进行操作的时候,程序会自动帮我们处理s末尾的'\0'。不知道是不是这样?

另外,在使用ifstream.open时,要求传入一个char *变量作为文件名,但直接输入时却用ifstream.open("文件名")这种方式。我不明白,这个双引号里的内容不是字符串string吗?但如果我使用一个string定义的变量代替括号内的部分,又会导致编译不通过。求教,谢谢~
展开
 我来答
ycsxm
推荐于2017-09-17 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:7885万
展开全部
char * 是传统的基本串类型,带尾0的字符串,要一套专门的处理串的子程序;
string 是面象对象的串对象,封装了许多函数,功能更强;
这两个类型可以互相转换,但这是不同的类型,有的传统老式函数ifstream.open
它的参数类型是char *,你就不能用string.
追问
也就是说char*的变量末尾也是自动添'\0'的对吗?在不严格要求的情况下,使用char*和string都是可以的?
追答
char *  是要尾0的。
面向对象用 string方便,但执行效率没有char * 的高。
根据不同的情况灵活运用。
273365949
2011-10-21 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:125
采纳率:100%
帮助的人:60.9万
展开全部
s.c_str() 就是将String类的字符串转换成C风格的字符串(即char*) string是STL C++标准模板库对字符操作的封装,安全性可用性都比C风格的好,建议去学习学习
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a649583061
推荐于2017-10-08 · 超过20用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:33.5万
展开全部
char* 是一个数据类型,而string则是一个类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式