EOF(文件结束符)—“End Of File”。通常,EOF被定义为值-1。
几种检测模拟EOF结束输入的代码实现:
1、eof(),fail()
从输入流读取数据,
eof( )——如果检测到EOF,cin.eof()返回true,否则返回false
fail( )——用来判断一个流是否“坏”掉了。如果failbit、badbit中任意一种或两种被设置,则fail()返回true,否则返回false。
#include <iostream>
int main()
{
using namespace std;
char ch;
int count=0;
cin.get(ch);
while(cin.fail()==false) //while(!cin.fail())
{
cout<<ch;
count++;
cin.get(ch);
}
cout<<endl<<count<<" characters read\n";
return 0;
}
2、cin.get(char)——接受一个char类型参数
cin.get(char)返回值是一个cin对象,读取成功cin转传成bool值true,否则为false。
while(cin.get(ch))
{
...
}
3、cin.get()——不接受任何参数
不接受任何参数的cin.get()成员函数返回输入中的下一个字符(将字符编码作为一个int值返回),工作方式与getchar()类似。
ch=cin.get();//ch应为int类型
cout.put(char)接收一个char类型参数,工作方式类似putchar()。可以传递一个int类型的参数给他,但该参数将被转换为char类型。
cout.put(ch);
#include <iostream>
int main()
{
using namespace std;
int ch;
int count=0;
while((ch=cin.get())!=EOF)
{
cout.put(ch);
count++;
}
cout<<endl<<count<<" characters read\n";
return 0;
}
EOF不是有效字符编码,与char类型不兼容,所以使用此方法时返回值应赋给int类型变量ch。