std::getline
işlevini kullanarak dosya sonu için nasıl denetlerim? eof()
kullanırsam, dosya sonu ötesini okumaya çalışana kadar eof
sinyali olmaz.dizgideki eof için denetleme :: getline
28
A
cevap
9
okuma işlemi başarılı olduğunu Sadece okumak ve sonra kontrol edin:
std::getline(std::cin, str);
if(!std::cin)
{
std::cout << "failure\n";
}
başarısızlık olabileceğinden dolayı nedenden için, aslında EOF oldu ne oldu görmek eof
üye işlevini kullanabilirsiniz: Eğer daha derli toplu yazabilir böylece
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++ kurallı okuma döngü: eof` tavsiye edilmez
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
Bu cevap sadece harika. Hata mesajlarına ihtiyacınız varsa, bu (sadece) yoldur. Bunu anlamak için zaman harcıyor: http://gehrcke.de/2011/06/reading-files-in-c-using-ifstream-dealing-correctly-with-badbit-failbit-eofbit-and-perror/ –
İlgili konular
- 1. getline
- 2. EOF
- 3. Dizgideki sayıyı değiştir - C#
- 4. denetleme
- 5. com.android.ddmlib.InstallException: EOF
- 6. denetleme
- 7. denetleme
- 8. beklenmedik EOF
- 9. getline + dizeleri hakkında neyi anlamadım?
- 10. JUnit - Karşılaştırma Biçimlendirilmiş dizgideki bozukluk
- 11. Neden getline bu kadar tutarsız?
- 12. Dizgideki kelimelerin sayısı nasıl sayılır?
- 13. PHP - Dizgideki virgüllerin sayısını sayın
- 14. Hatası <EOF>
- 15. EOF, python ftplib
- 16. Delphi assembler sabiti 'eof'
- 17. prematüre eof hata
- 18. PHPMailer SMTP DİKKAT: EOF
- 19. Ifstream - Sıfırlama EOF biti
- 20. SyntaxError: beklenmedik EOF
- 21. getLine için (kullanıcı tarafından okunabilen) varsayılan dizeye nasıl sahip olunur?
- 22. Bir dizide/dizgideki sıfırları temizlemek için yinelemeli işlev
- 23. Birden çok satır okumak için birden fazla getline çağrı kullanma
- 24. Bir dizgideki her harf için bir sayı ekleme
- 25. C++ .txt sorunlarda okuyabilirsiniz. getline readline
- 26. Yanlış IO eylemleri putStr ve getLine
- 27. Selenium Python dizgideki alıntılar atma hatası veriyor
- 28. linq için null değerini sql olarak denetleme
- 29. Ragel EOF eylemleri nasıl çalışır
- 30. EOF hatanın javascript_include_tag Raylar 4
'Bu doğru, ama farklı bir nedenden dolayı. EOF geçmişini okumak * tam olarak * EOF için test etmek istediğinizde ne yaptığınızı, yani bu açıdan iyi çalışır. –