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 ...
随机推荐
- 接触PHP快4个月
就要下班了,接触php快4个月,掌握的不好,需要实战,看到自己博客空空的,就mark一下吧!下班了...
- 在ubuntu下安装google chrome
由于手上有两台电脑,再加上我那个选择困难症加上纠结劲.所以果断把其中一台电脑只装linux系统,另一台电脑只装windows了.免得我老纠结!于是linux便选择了ubuntu. 由于浏览器一直用的是 ...
- 【笔记】读取properties文件
package com.bshinfo.el.userInfo.util; import java.io.BufferedReader; import java.io.File; import jav ...
- mvc学习中的问题汇总
问题1:更新条目时出错.有关详细信息,请参阅内部异常. 初学MVC,正好手上有别人搭建的一个框架.于是直接用了起来.一切似乎都很顺利. 列表页也正常读取了.可是在新增数据时,始终报如上的错.即使用了调 ...
- SQL语法和运算符(一)
一个数据库通常包含一个或多个表.每个表由一个名字标识,表包含带有数据的记录(行). 一些最重要的SQL命令(SQL对大小写不敏感): 一.SQL语法 select:从数据库中提取数据 update:更 ...
- GRUB、MBR名词解释
GRUB:是一个来自GUN项目的多操作系统启动程序,是多启动规范的实现,他允许用户在计算机内同时拥有多个操作系统,并在计算机启动时选择希望的操作系统.GRUB可用于选择系统分区上的不同内核,也可用于向 ...
- “div+css”下拉菜单
<style> html, body { margin: 0; padding: 0; } .btn-group{ font-size: 14px; position: relative; ...
- PHP 版本判断 version_compare() 函数
在度娘中简单的找了下,判断当前PHP的版本是否高于某个版本,或者低于某个版本的方法 显示的结果基本上都是一样的,好吧,要不是我忘记了version_compare()这个函数我才不会去找度娘,果断找以 ...
- python 新手遇到的问题
作为新手,我把之前遇到的问题贴出来 错误提示1: TypeError: unbound method a() must be called with A instance as first argum ...
- DBNEWNAME工具介绍
下面修改数据库的SID和db_name [root@oracle ~]# su - ora11g db11@oracle /home/ora11g$ db11@oracle /home/ora11g ...