如何使用std::getline
函數檢查文件結束?如果我使用eof()
,它將不會發出eof
信號,直到我試圖讀取超出文件結尾。檢查字符串中的eof :: getline
28
A
回答
9
只要閱讀,然後檢查讀操作成功:由於多種原因
std::getline(std::cin, str);
if(!std::cin)
{
std::cout << "failure\n";
}
由於故障可能是,你可以使用eof
成員函數看到它發生的事情實際上是EOF:
std::getline(std::cin, str);
if(!std::cin)
{
if(std::cin.eof())
std::cout << "EOF\n";
else
std::cout << "other failure\n";
}
getline
返回流,因此您可以更緊湊寫:
if(!std::getline(std::cin, str))
39
在C++中的經典閱讀循環是:
while (getline(cin, str)) {
}
if (cin.bad()) {
// IO error
} else if (!cin.eof()) {
// format error (not possible with getline but possible with operator>>)
} else {
// format error (not possible with getline but possible with operator>>)
// or end of file (can't make the difference)
}
+1
這個答案太棒了。如果你需要錯誤信息,這是唯一的方法。它真的需要花時間來解決這個問題:http://gehrcke.de/2011/06/reading-files-in-c-using-ifstream-dealing-correctly-with-badbit-failbit-eofbit-and-perror/ – 2011-07-06 11:19:09
相關問題
- 1. 如何檢查'\ n'字符使用getline()c字符串
- 2. Getline和EOF
- 3. C++ EOF Getline錯誤
- 4. 如何檢查HTTP客戶端的EOF使用fdopen()和getline()
- 5. getline返回空字符串
- 6. 固定字符串與spacebars和EOF檢查
- 7. Python:檢查字符串中的字符
- 8. 檢查字符串中的字符
- 9. 檢查字符串的子字符串
- 10. 檢查字符串的數字
- 11. 在getline字符串中獲取字符串
- 12. 檢查字符串中
- 13. 檢查字符串
- 14. 檢查字符串
- 15. 檢查字符串
- 16. 檢查字符串
- 17. 檢查字符串
- 18. 檢查字符串
- 19. 檢查字符串
- 20. 檢查字符串
- 21. std :: getline和eol vs eof
- 22. getline和一次測試EOF
- 23. C++ getline()和文件EOF
- 24. C++ - getline stdin EOF不工作
- 25. 想法檢查字符串的某些字符的字符串檢查器?
- 26. 檢查字符串包含字符串
- 27. 檢查C++中的另一個字符串中的字符串
- 28. 檢查字符串中的字符串在javascript中
- 29. 的JavaScript - 檢查字符串
- 30. eof字符串,而不是流
這'不建議eof'是真實的,但出於不同的原因。通過EOF讀取*完全是*當您想要測試EOF時做什麼,所以'eof'在這方面效果很好。 – 2010-02-12 12:03:41