Я не нахожу однозначного ответа на один аспект объекта fstream
, необходимый для определения того, стоит ли его использовать. fstream
хранит его содержимое в памяти или больше похоже на указатель на местоположение в файле? Первоначально я использовал CFile
и читал текст в CString
, но я бы предпочел не иметь весь файл в памяти, если я смогу его избежать.Как работает fstream? Память или файл?
ответ
fstream
не подходит для file stream
. Обычно это соединение с файлом в файловой системе хоста ОС. (§27.9.1.1/1: «Класс basic_filebuf<charT,traits>
связывает как входную последовательность, так и выходную последовательность с файлом.»)
Он (как правило) хранит некоторую информацию из этого файла, и если вы работаете с крошечным файлом, все может случиться, что он будет помещен в буфер. Однако в типичном случае большая часть данных будет находиться в файле на диске (или, по крайней мере, в кэше файлов ОС) с некоторой относительно небольшой его частью (обычно в нескольких килобайтах) в буфере fstream.
Если вы сделал хотите использовать буфер в памяти и он действует как файл, вы обычно использовать std::stringstream
(или вариант, как std::istringstream
или std::ostringstream
).
- 1. Как читать определенный файл fstream?
- 2. Fstream не открывая файл
- 3. fstream - сокращающийся файл
- 4. C++ fstream перезаписать файл
- 5. Файловый файл fstream переписан
- 6. fstream запись в файл
- 7. fstream не пишет файл
- 8. fstream не создаст файл
- 9. std :: fstream не создает файл
- 10. fstream абсолютный путь не работает
- 11. «Файл не открывается». C++ fstream
- 12. Как записать файл в память или файл в Lambda aws?
- 13. fstream :: close() не закрывает файл
- 14. fstream не создает новый файл
- 15. fstream не записывается в файл
- 16. getline не работает с fstream
- 17. оператора = не работает с fstream
- 18. Неужели мой fstream плохой или плохой()?
- 19. Как работает AngularJS Память
- 20. fstream запись/чтение в двоичный файл не работает должным образом.!
- 21. fstream не работает в Qt
- 22. Packagepart копировать в файл или в память
- 23. Как работает кеш-память?
- 24. JWrapper Как работает память?
- 25. Как работает память Zend_Auth?
- 26. C++ с fstream или базой данных
- 27. нагрузки двоичный файл с помощью fstream
- 28. Почему std :: fstream не записывает файл?
- 29. Как добавить к файлу с флагом fstream fstream :: app, похоже, не работает
- 30. Fstream не может создать новый файл
Значит, 'stringstream' был бы предпочтительнее для обработки действительно большого текстового файла, который я хотел бы разбор строки за строкой? –
См. [Std :: getline] (http://en.cppreference.com/w/cpp/string/basic_string/getline). – Casey
@JoeMajsterski: нет, возможно нет. Строковый поток обычно используется в качестве временного буфера для (например) данных формата перед отображением или для чтения строки за раз из файла, а затем используется 'stringstream' для разбора фрагментов из строки. –