在C++中,輸入流(如cin
)的錯誤檢測主要通過檢查其狀態(tài)來實現(xiàn)。當(dāng)輸入流遇到錯誤或達到文件末尾時,它的狀態(tài)會發(fā)生變化。我們可以使用std::istream
類中的fail()
和eof()
成員函數(shù)來檢測這些錯誤。
下面是一個簡單的示例,展示了如何使用fail()
和eof()
檢測輸入流中的錯誤:
#include <iostream>
#include <limits>
int main() {
int number;
std::cin >> number;
// 檢查輸入流是否遇到錯誤
if (std::cin.fail()) {
std::cout << "Error: Invalid input." << std::endl;
// 清除錯誤標(biāo)志
std::cin.clear();
// 檢查是否到達文件末尾
if (std::cin.eof()) {
std::cout << "Error: End of file reached." << std::endl;
} else {
std::cout << "Error: Input not recognized." << std::endl;
}
} else {
std::cout << "The number is: " << number << std::endl;
}
return 0;
}
在這個示例中,我們首先嘗試從標(biāo)準輸入讀取一個整數(shù)。如果輸入流遇到錯誤或到達文件末尾,fail()
函數(shù)將返回true
。接下來,我們可以使用eof()
函數(shù)來檢查是否到達了文件末尾。如果fail()
返回true
且eof()
返回false
,則表示輸入未正確識別。
注意,在檢測到錯誤后,我們需要使用clear()
函數(shù)清除錯誤標(biāo)志,以便再次嘗試讀取輸入。