搜索
当前位置: 秒秒彩官网 > 读入文本 >

c++文本读入输出问题

gecimao 发表于 2019-07-26 12:35 | 查看: | 回复:

  我想问为什么多了个8,我觉得可能是我对while(input)的理解不够正确,谁能解释下。另外,我写得代码有什么地方不妥,也请指出,谢谢。

  麻烦再问一下,!input.eof()我明白什么意思,input.good()是什么意思?我发现去掉它也能出我想要的结果。

  怎样能就是说只计算每行的结果,如果只有一个数就把这数直接输出?谢谢展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  最后一次循环的时候,读到一个7,赋给a,然后运行到inputb;,还要读一个数,但读不到了,此时流已经出错了,但程序并不中止,b的值也没有改变(还是上一次循环得到的6),所以输出了一个13。

  如果你直接用inputa;这种形式的话,读入数据时是不区分行的。所谓“行”就是一个回车符,这样读取时,回车符号和空格符号是被同样看待的,都作为参数的分隔符。所以要按行处理的话,要使用getline函数。写了个例子(为了方便处理参数,使用了stringstream):

  楼上说的很好,但是答非所问,用于逻辑运算时input和input.eof()是不一样的

  解释一下流为什么可以用于逻辑表达式,这跟流的基类ios_base中重载的void*()运算有关系,通俗一点说,就是如果这个流没有出错,流用于逻辑运算时就返回true。

  那么什么时候会出错呢,在用户程序中多数只有两种情况:1.读到了文件末尾后继续读。2.读到的数据和预期的数据不同(比方说要读一个int却读到了一个char)。

  源程序中的while循环执行4次之后,读到了文件末尾,此时流还是好的(没有出错),所以又执行一次,执行inputa;时,已经读不出数据来了,此时的input就会返回false,所以本次循环执行完后,在判断循环条件时就不满足了。由这个过程可以看出,为何输出了两个8。

  展开全部到达文件尾部有两种可能的解释,1当程序从一个 文件读取数据时。在程序读取文件中的最后一项之后就立即出现文件结束的条件。2只有当程序想越过文件的最后一项进行读取时才出现文件结束的条件。

  书上说如果C++用第一种循环结构,最后一个值将从文件中读取并由循环的余下部分处理,在下次循环中,eof()将返回false,于是语句famount;将又执行一次,当没有数据时将出现文件结束的条件,但内存中amount的值仍然是一样的,由于程序不知道已经没有数据,循环的余下部分将继续处理最后一个值,好象它在输入文件中出现两次一样,在下一次循环中将出现文件结束的条件,于是循环终止。

本文链接:http://k-mood.com/duruwenben/578.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部