Bir C++ uygulaması için, stdin'de bir dosya sonu (EOF) program aracılığıyla nasıl zorlayabilirim?Stdin’de nasıl zorlanırım?
cevap
Aslında yapamazsınız. Stdin'den veri okuyabildiğiniz sürece, EOF'a ulaşılamamış ve aslında ona asla ulaşamazsınız. Bununla birlikte, stdin
'un kendisini kapatabilirsiniz. Kapatmak için, bunu:
fclose(stdin);
Bunlardan sonra, stdin
verileri okuyamaz.
Unix benzeri bir sistemde bir terminaldeyseniz, Ctrl-D
'a basın. Windows'ta, Ctrl-Z
.
Düzenleme: Bunu "programlı olarak" yapma isteğini görünce, fclose(stdin)
'u denemenizi öneririz. Bir şekilde yeterince iyi değilse, gerçek bir dedikodudan başka bir şeye başvurmak için akışı ayarlamak için std::cin.rdbuf()
kullanmak ve daha sonra bu akışa istediğiniz şeyi yapmak çılgın bir fikir olabilir. Ama bu kötü kokmaya başlar, tıpkı bilgisayara karşı savaştığınız gibi, gerçek hedefin ne olduğu hakkında daha fazla bilgi edinmek isterim.
Özellikle bunun için oluşturulan her akış için güzel bir küçük işlev var.
std::cin.setstate(std::cin.eofbit);
bu belgeleri oldukça seyrek ama bazı var:
stream.setstate(stream.flags)
Yani kodunuzda gibi bir şey tetikleyen basit bir koşul olabilir:
Bu sözdizimi olan bir şey gibidir cppreference.com ve cplusplus.com.
- 1. Regresyon hattının geçmesi için nasıl zorlanırım (0,1)?
- 2. F # uygulamamı yönetici olarak çalıştırmaya nasıl zorlanırım? Bir F # uygulama için
- 3. C# Winforms programımı herhangi bir bilgisayarda yönetici olarak çalıştırmaya nasıl zorlanırım?
- 4. Sanalenv'imi bu derlenmiş modülü sistem düzeyinde yüklü olarak görmek için nasıl zorlanırım?
- 5. Şablonda düğmesine tıklayarak ListBoxItem nasıl seçilir?
- 6. https
- 7. Nasıl Nasıl değiştirebilirim CodeIgniter'da
- 8. nasıl
- 9. nasıl
- 10. nasıl
- 11. nasıl
- 12. nasıl
- 13. nasıl
- 14. nasıl
- 15. nasıl?
- 16. nasıl
- 17. nasıl
- 18. nasıl
- 19. nasıl
- 20. nasıl
- 21. nasıl
- 22. nasıl
- 23. nasıl
- 24. nasıl
- 25. nasıl
- 26. nasıl
- 27. nasıl
- 28. nasıl
- 29. nasıl
- 30. nasıl
Nasıl 'stdin'de EOF'yi zorlamak'? Stdin'i (veya cin) kapatabilirsin. Döngününüzü tek taraflı olarak sonlandırabilirsiniz. Dosyanın sonuna kadar arama yapabilirsiniz (ancak bu, bir terminal veya boru girişi ile yardımcı olmaz). Sorunu 'freopen()' ile zorlayabilirsiniz;/dev/null veya NUL: 'den okumak için standart girişi yeniden atayabilirsiniz. –