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 ;
} 展开
#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 ;
} 展开
4个回答
展开全部
EOF是一个宏,使用int型的变量去保存输入值,与之比较。。。。使用char值保存EOF输入值会溢出。。。一般EOF的值是-1
表示一个流读结束了。
对于一个文件来说,读尽最后一个字节算做结束。
对于标准输闹答入(也就是一般的键盘输入),需要人为的产生一个EOF,告诉系统输入结束了。Unix/Linux下一般使用Ctrl+d,Dos/Windows下是Ctrl+z
注意: 还要加一个回车 ……
我用谨困你的程序试了一遍没有问题,按 Ctrl+z 组合键;
另外既然包含了祥弯念iostream,输出换行可以使用
cout<<endl; 等价于 cout<<std::endl;
表示一个流读结束了。
对于一个文件来说,读尽最后一个字节算做结束。
对于标准输闹答入(也就是一般的键盘输入),需要人为的产生一个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,会终止循环。
你老师的具体原话是什么。。。。我不能再不清楚情况的时候给你解答~~怕误导你
展开全部
对于标准输入(也就是一般的键盘输入),需要人为的产生一个EOF,告诉系统输入结束了。Unix/Linux下一般使用Ctrl+d,Dos/Windows下是Ctrl+z
注意: 还举肢拍要加一饥租个回车 ……
此时cin流已经处于无效状态了,如果正羡下文要继续使用cin需要加语句cin.clear(),使流处于有效状态。
注意: 还举肢拍要加一饥租个回车 ……
此时cin流已经处于无效状态了,如果正羡下文要继续使用cin需要加语句cin.clear(),使流处于有效状态。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cin >> c 返回的类型是ostream,当将ostream类型当做bool型使用,cin操作失败,返回false,成功缓哗返回true.
另外说下cin >> 的重载问埋拍题,应该扰液行知道cin >>c 语句相当于cin.operator >> (c),很明显函数参数不对,就会产生错误。
另外说下cin >> 的重载问埋拍题,应该扰液行知道cin >>c 语句相当于cin.operator >> (c),很明显函数参数不对,就会产生错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用的VS2010,输入ctrl+C会出错,输入ctrl+Z 回车 就行了
输入eof不是真的把这三个字母输进去,否则如宴陵果真的需要输入这三个字母不是没办法了?eof是表示输入袜大一些特晌好戚殊字符使cin返回值为eof(出错,值为0)比如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也行了
谢谢采纳哈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |