Nie znajduję jednoznacznej odpowiedzi na jeden aspekt obiektu fstream
niezbędny do określenia, czy warto go użyć. Czy fstream
przechowuje swoją zawartość w pamięci, czy jest bardziej jak wskaźnik do lokalizacji w pliku? Pierwotnie używałem CFile
i czytałem tekst do CString
, ale wolałbym nie mieć całego pliku w pamięci, jeśli mogę tego uniknąć.Jak działa strumień? Pamięć lub plik?
Odpowiedz
fstream
jest skrótem od file stream
- zwykle jest to połączenie z plikiem w systemie plików hosta. (§27.9.1.1/1: "Klasa basic_filebuf<charT,traits>
kojarzy zarówno sekwencję wejściową, jak i sekwencję wyjściową z plikiem.")
Zwykle buforuje niektóre informacje z tego pliku, a jeśli zdarzy ci się pracować z małym plikiem może się zdarzyć, że zmieści się w buforze. Jednak w typowym przypadku większość danych znajduje się w pliku na dysku (lub przynajmniej w pamięci podręcznej plików systemu operacyjnego) z pewną stosunkowo niewielką jego częścią (zazwyczaj kilka kilobajtów) w buforze fstream.
Jeśli nie chcesz użyć bufor w pamięci i mają działać jak plik, można normalnie używać std::stringstream
(lub wariant jak std::istringstream
lub std::ostringstream
).
- 1. Jak działa pamięć podręczna Gmap.net?
- 2. URL, aby pobrać plik wideo lub strumień z YouTube?
- 3. Jak przekonwertować plik MultipartFile na strumień bajtowy
- 4. Jak działa pamięć masowa Zend_Auth?
- 5. Jak napisać strumień RTP/H264 jako plik
- 6. express.js: jak pobrać strumień jako plik?
- 7. Jak działa pamięć podręczna HTTP HTTP?
- 8. node.js - strumień plik bez zapisywania go tymczasowo
- 9. Jak działa plik .RGS?
- 10. Jak działa plik edit.exe?
- 11. Czy plik() w asp.net mvc zamknąć strumień?
- 12. WebClient.UploadFile przekazuje plik do przesłania jako strumień
- 13. Strumień równoległy z HashSet nie działa równolegle
- 14. Gdzie i jak sprawdzić, czy pamięć podręczna hibernacji naprawdę działa
- 15. Jak przetwarzać plik w PowerShell wiersz po wierszu jako strumień
- 16. Pamięć podręczna aplikacji Safari 7 nie działa
- 17. Strumień bajtów i strumień znaków
- 18. PHP: zamknij strumień wyjściowy
- 19. Strumień wejściowy. Odczytuje zwrot 0 lub -1?
- 20. "zamknij" strumień?
- 21. Pamięć podręczna dysku AlamofireImage nie działa
- 22. Strumień C++ do pamięci
- 23. Jak działa Redis, gdy pamięć RAM zaczyna się zapełniać?
- 24. Jak mogę sprawdzić, czy moja pamięć podręczna Redis działa?
- 25. Jak wyświetlić lub edytować plik localStorage
- 26. Gniazda domeny systemu UNIX a pamięć współużytkowana (plik odwzorowany)
- 27. * plik * zmienna nie działa
- 28. Apache Spark odczytuje plik jako strumień z HDFS
- 29. jak poprawnie zamknąć strumień tweepy
- 30. Jak całkowicie wyłączyć pamięć podręczną?
Więc 'stringstream' byłby lepszy do obsługi naprawdę dużego pliku tekstowego, który chciałem parsować wiersz po linii? –
Zobacz [std :: getline] (http://en.cppreference.com/w/cpp/string/basic_string/getline). – Casey
@JoeMajsterski: nie, prawdopodobnie nie. Strumień ciągów jest zwykle używany jako bufor tymczasowy do (na przykład) formatowania danych przed wyświetlaniem lub odczytywania linii w czasie z pliku, a następnie użycia 'stringstream' do analizowania elementów poza linią. –