while(cin.eof)出错 poj
zoj遇到c++如何判定输入流结尾的问题,一不小心就超时了
楼下的代码可以通过zoj
#include<iostream>
using namespace std;
int main(){
int a,b;
while(true){
cin>>a>>b;
if(cin.eof()){//换成fail(),或是good()也可以通过
break;
}
int sum=a+b;
cout<<sum<<endl;
}
return 0;
} 这里也可以通过
#include<iostream>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b){
int sum=a+b;
cout<<sum<<endl;
}
return 0;
}
楼下的代码无法通过
#include<iostream>
using namespace std;
int main(){
int a,b;
while(cin.eof()){//无法通过zoj
cin>>a>>b; int sum=a+b;
cout<<sum<<endl;
}
return 0;
}
话说到底是因为什么呢,oj的测试用例我没有猜到,在这里找到一些想法 http://stackoverflow.com/questions/13343991/c-why-cin-eof-read-last-char-twice
在这里我得到一些启发
http://blog.chinaunix.net/uid-27034868-id-3758629.html
这是一个读取文件的例子
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main(){
char data;
ifstream infile;
infile.open("in.txt");
if(infile.fail()){
cout<<"fail to open"<<endl;
return 1;
}
while(1){
infile>>data;
if(infile.eof()){//注意这里 将循环结束的条件设置在读完一次数据后面,如果将判断条件放在while里面
break;
}
cout<<data;
} /*while(!infile.eof()){//这样的话 文件的最后一个字符将输出两次 比如in.txt="aaa" 那么标准输出将会是aaaa四个
明明使用了eof()判断了,为什么还是这样的呢 原因是这样的,因为eof()发现读到文件结束标志EOF时并不会立刻返回而是比较后知后觉(这段话摘自楼上给的链接的博客,话说我没有账号,不过觉得这种想法是错误的,根据单步调试的结果来看一旦infile接受了eof就会触发eofbit,也即
判断成功结束循环)
infile>>data;
cout<<data;
}*/
infile.close();
cout<<endl;
return 0;
}
while(cin.eof)出错 poj的更多相关文章
- POJ 1386&&HDU 1116 Play on Words(我以后再也不用cin啦!!!)
Play on Words Some of the secret doors contain a very interesting word puzzle. The team of archaeolo ...
- C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符
在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员 ...
- C++中cin的用法汇总
cin可以用于接收输入,最常见的是从控制台接收.在刚学习C++的时候经常会用cin来接收数据,这里想要系统的总结一下cin的用法,保证不灌水. C++中的cin是一个 istream对象,从标准输入中 ...
- cin中函数的作用
cin是istream类的对象,它是从标准输入设备(键盘)获取数据,程序中的变量通过流提取符">>"从流中提取数据.流提取符">>"从流 ...
- 关于fflush、缓冲区、scanf、EOF等问题真麻烦
1.为什么 fflush(stdin)是错的 http://u637.springnote.com/pages/6288463.xhtml(已经bad request了) 首先请看以下程序: #inc ...
- 从while(cin>>a)开始探讨cin
1. 首先cin>>a返回的是左操作数,也就是返回cin. cin的条件状态中: cin.eof() 判断流是否到达文件的结束符 cin.fail() 判断IO操作是否失败 在 ...
- 关于if (!cin)以及while (cin >> word)
首先注意: 1.每一个输入(输出)对象就代表一个输入(输出)流: 2.输入(输出)对象中的流状态成员标记了输入(输出)流当前的状况,当eofbit.badbit.failbit三个标记位均为0时表示流 ...
- POJ 2250 Compromise (UVA 531)
LCS问题.基金会DP. 我很伤心WA非常多.就在LCS问题,需要记录什么路. 反正自己的纪录path错误,最后,就容易上当. 没有优化,二维阵列,递归打印,cin.eof() 来识别 end of ...
- poj 2585 Window Pains 解题报告
Window Pains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2027 Accepted: 1025 Desc ...
随机推荐
- 把 excel 和 mysq l数据库相互转换
不用代码轻松搞定,参考http://jingyan.baidu.com/article/fc07f9891cb56412ffe5199a.html 1.excel 转 mysql a.首先确认你的数据 ...
- sql 如何将拼的sql语句结果赋值给变量
SET @SQLS='select @AllUser=count(1) from (select PhoneId from '+@TABLE+' where SiteId='+convert(VARC ...
- APP产品交互设计资源汇总(不断更新中...)
Axure RP 7 元件库 http://www.iaxure.com/tag/axure7-0%E5%85%83%E4%BB%B6%E5%BA%93 ios8组合元件库V1.2版 http://w ...
- Python 爬取网站资源文件
爬虫原理: 以下来自知乎解释 首先你要明白爬虫怎样工作.想象你是一只蜘蛛,现在你被放到了互联“网”上.那么,你需要把所有的网页都看一遍.怎么办呢?没问题呀,你就随便从某个地方开始,比如说人民日报的首页 ...
- 【Java EE 学习 76 下】【数据采集系统第八天】【通过AOP实现日志管理】【日志管理功能分析和初步实现】
一.日志管理相关分析 1.日志管理是一种典型的系统级别的应用,非常适合使用spring AOP实现. 2.使用日志管理的目的:对系统修改的动作进行记录,比如对权限.角色.用户的写操作.修改操作.删除操 ...
- python tkinter
1. 在python3中使用 import tkinter 异常:no module named _tkinter apt-get install python-tk
- 【转载】Java集合类Array、List、Map区别和联系
Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...
- C# 向listbox添加大量数据项的实践心得
使用 ListBox.Items.Add 方法添加项时,可以使用 BeginUpdate 方法,以防止每次向列表添加项时控件都重新绘制 ListBox.完成向列表添加项的任务后,调用 EndUpdat ...
- Terminology: Sandbox
In Comupter Secuity: from https://en.wikipedia.org/wiki/Sandbox_(computer_security) In computer secu ...
- PHPer不能不看的50个细节!
1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数&quo ...