c++问题while(cin>>x)怎么用eof结束?

看下面程序,当c是int型时,我输入eof,再回车,退出,但是,我输入e,即随便输入一个字母,也会退出。当把c改为char型时,输eof会输出0e0o0f;老师说whil... 看下面程序,当c是int型时,我输入eof,再回车,退出,但是,我输入e ,即随便输入一个字母,也会退出。当把c改为char型时,输eof会输出0e 0o 0f ;老师说while(cin>>x) 键盘输入eof 退出循环。我用的vs2010,但用同学的C++ sp6试时还是一样?求解!!!!!!!!!

#include "stdafx.h"

//编写一个程序,以十六进制的方式将标准输入的数据直接输出,每行输出25个数字,每个数字之间用一个空格分隔,并用setfill将只有一位数字的十六进制数h以0h的形式输出。(P24课后练习9)

#include <iostream>

#include <iomanip> //用含参的控制符时 要包含这个

using namespace std ;

int main ()

{

int c ;

int count = 0 ;
cout <<"输入数据 ,摁空格或Tab 输入下一个,摁enter 输出\n"; //连续输入

while ( cin >> c )

{
cout << hex << setw(2)<< setfill ( '0' )<< c;

if ( ++count == 25 )

{

cout <<'\n';

count = 0;

}

else

cout <<' ';

}

return 0 ;

}
展开
 我来答
icecoobe
推荐于2018-03-09 · TA获得超过1989个赞
知道小有建树答主
回答量:1058
采纳率:100%
帮助的人:1103万
展开全部
EOF是一个宏,使用int型的变量去保存输入值,与之比较。。。。使用char值保存EOF输入值会溢出。。。一般EOF的值是-1
表示一个流读结束了。
对于一个文件来说,读尽最后一个字节算做结束。
对于标准输入(也就是一般的键盘输入),需要人为的产生一个EOF,告诉系统输入结束了。Unix/Linux下一般使用Ctrl+d,Dos/Windows下是Ctrl+z
注意: 还要加一个回车 ……

我用你的程序试了一遍没有问题,按 Ctrl+z 组合键;
另外既然包含了iostream,输出换行可以使用
cout<<endl; 等价于 cout<<std::endl;
追问
老师说用noskipws和skipws时eof不行,得用ctrl+z才能退出循环,难道是他讲错了?
追答
http://msdn.microsoft.com/zh-cn/library/98bsd5x4(v=VS.90).aspx
http://msdn.microsoft.com/zh-cn/library/ttf4txbf(v=VS.90).aspx

什么叫EOF不行?反正你这样写是对的,同时需要手动生成一个EOF输入值的时候,按照我上面说的,ctrl + z,等价于输入一个EOF,会终止循环。
你老师的具体原话是什么。。。。我不能再不清楚情况的时候给你解答~~怕误导你
du瓶邪
推荐于2016-01-12 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2897万
展开全部
对于标准输入(也就是一般的键盘输入),需要人为的产生一个EOF,告诉系统输入结束了。Unix/Linux下一般使用Ctrl+d,Dos/Windows下是Ctrl+z
注意: 还要加一个回车 ……
此时cin流已经处于无效状态了,如果下文要继续使用cin需要加语句cin.clear(),使流处于有效状态。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灬哒吹舞壁6
2011-09-14 · TA获得超过100个赞
知道答主
回答量:68
采纳率:0%
帮助的人:50.1万
展开全部
cin >> c 返回的类型是ostream,当将ostream类型当做bool型使用,cin操作失败,返回false,成功返回true.
另外说下cin >> 的重载问题,应该知道cin >>c 语句相当于cin.operator >> (c),很明显函数参数不对,就会产生错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱好_问问
2011-09-13 · TA获得超过411个赞
知道小有建树答主
回答量:365
采纳率:0%
帮助的人:349万
展开全部
我用的VS2010,输入ctrl+C会出错,输入ctrl+Z 回车 就行了
输入eof不是真的把这三个字母输进去,否则如果真的需要输入这三个字母不是没办法了?eof是表示输入一些特殊字符使cin返回值为eof(出错,值为0)比如ctrl+C或ctrl+Z
追问
谢啦 真是啊    老师说什么用noskipws和skipws时eof不行,得用ctrl+z
追答
VC 6.0好像是能用ctrl+C的,不过VS能用ctrl+z也行了
谢谢采纳哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式