为什么c++中gets ,cin.get()等可以读取一个字符数组,但不能读取一个字符串???具体如图

这样是错误的,charstr[100],cin.getline(str,100)这样就可以,字符数组不是等同于字符串吗... 这样是错误的,char str[100],cin.getline(str,100)这样就可以,字符数组不是等同于字符串吗 展开
 我来答
龙飞日月
2018-11-08 · TA获得超过2459个赞
知道小有建树答主
回答量:318
采纳率:33%
帮助的人:152万
展开全部
这个涉及一些较为底层的东西了。其实题主如果先学C,再学C++会有比较好的理解,所以我的回答思路也是从C到C++。
首先我们知道C语言是面向过程的,在纯C的情况下,char是一个字符,但我们往往要面对一串字符,所以程序员们通过开辟一个字符数组保存内容,由此衍生出了类似strcpy、strcmp这种函数。这种情况下说字符数组等价于字符串是没有问题的。
但后来有了面向对象,C++相对C多了完善的对象支持,同时增加了string专门处理字符串,但此时我们要注意,string并不是基本类型,定义一个字符串比纯C下的内存开销要多一些,比如str.size()返回这个字符串的长度等,多出的内存开销就是要支撑这些功能。所以在C++下,字符串和字符数组是完全不同的两个概念。
那么回到问题本身,题主运行getline(str, 100),str其实是一个指针,指向这个数组的开头,第二个参数100则是指定容纳内容的内存空间,而gets、cin.get无一例外是以这种方式工作,这些函数的参数需要是指针,所以以变量名为参数是不可能正常工作的。
追问
学校里直接学的c++,,,那有什么可以用string类。但是输入的时候会把空格算上以换行解暑的方法呢?怎么能求输入string的长度呢?
追答
印象里没有,如果有空格,建议用字符数组保存用户的输入,然后调strlen()函数可以算出长度。
匿名用户
2018-11-08
展开全部
你可以这样理解,string相当于一个类而字符数组就仅仅是个数组而已
类里面有一个字符数组
而getline是只能读字符数组的
string里面还有一些方法。比如返回字符长度啊之类的
公众号“一堆代码”回复“书籍”免费拿c/c++宝典
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9967d04
2018-11-08 · TA获得超过505个赞
知道答主
回答量:22
采纳率:50%
帮助的人:5.1万
展开全部
当然不同于字符数组啦,string 和 char 是不一样的,本质不一样。
追问
所以这里是为什么呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式