2 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個贊
eof 就是文件結(jié)束
因?yàn)槲募羔樀阶詈笠粋€字符時并不會觸發(fā)eof,再讀一次讀不到數(shù)據(jù)才觸發(fā)eof,這樣c還保留著上一次的數(shù)據(jù),又被輸出一次,peek()方法是讀取文件指針下一個位置的值,但并不移動文件指針,用在這里很合適
#include<iostream>
#include <fstream>
using namespace std;
void main()
{
fstream io;
char c;
io.open ("a.txt",ios::in);
while (io.peek()!=EOF) //這樣判斷
{
io>>c;
cout<<c;
}
cout<<endl;
io.close();
}

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個贊
EOF在C++中的定義為:const int EOF = -1;
它這么定義是有道理的:
舉個例子來說
int ch; //注意:這里定義了ch是int型的,而不是char型的
while((ch = cin.get()) != EOF)
{
cout << ch;
}
cin.get()是讀取輸入流中的一個字節(jié),但是時常忽略的,也是必須注意的是:那些C++的設(shè)計(jì)者們將cin.get()設(shè)計(jì)成返回int型,而不是char型,這不是令人挺奇怪的嗎?感覺char ch = cin.get()比較順其自然吧?原因就是為了能夠使cin.get()能夠返回一個EOF。
- 2 回答
- 0 關(guān)注
- 395 瀏覽
添加回答
舉報