1. 程式人生 > >《C++ Primer Plus》學習隨記1---模擬EOF

《C++ Primer Plus》學習隨記1---模擬EOF

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。