может кто-нибудь объяснить, что именно это означает? Я пытаюсь понять, в чем разница между clog
и cerr
, разница только в буферизацию заранее спасибобуферизация в iostream
ответ
Когда вы пишете забивают, то вы на самом деле писать в магазин в памяти символов. Когда этот магазин заполняется, он записывается в фактический поток. Когда поток закрыт (что произойдет при завершении программы), тогда любые оставшиеся данные будут записаны в поток (ручная промывка также может произойти).
С cerr этого не происходит.
Как правило, поскольку запись в память быстрее, чем запись в большинство потоков, эффект буферизации является общим улучшением производительности. Это не всегда так (классический пример - это то, где уровни косвенности приводят к записи буфера в буфер, пишущий буфер), но часто достаточно, чтобы это было разумным значением по умолчанию. Следствием этого является то, что может быть задержка между записываемым объектом потока и фактическим потоком, который в некоторых случаях является неуместным.
Разумно представить себе, что что-то, написанное на cerr, может потребовать скорейшего действия, но что-то пишущее для забивания не будет, следовательно, разница.
Разница между clog и cerr заключается в том, что clog полностью буферизуется, тогда как вывод на cerr записывается на внешнее устройство после каждого форматирования. С полностью буферизованным потоком вывод на фактическое внешнее устройство записывается только тогда, когда буфер заполнен. Таким образом, clog более эффективен для перенаправления вывода в файл, в то время как cerr в основном полезен для терминального ввода-вывода. Запись на внешнее устройство после каждого форматирования, на терминал в случае cerr, служит для синхронизации вывода и ввода с терминала. Кроме того, предопределенные потоки синхронизируются со связанными с ними стандартными файлами C.
Итак, засорение осуществляется буферизированным потоком, а cerr - нет, не так ли? – hqt
- 1. InputStreamReader буферизация
- 2. Буферизация аудиопотоков
- 3. Двойная буферизация
- 4. iostream clear()
- 5. Двойная буферизация в BlackBerry?
- 6. Android - Буферизация в MediaPlayer
- 7. Двойная буферизация в Jython
- 8. Буферизация журналов в log4php
- 9. Буферизация CMSampleBufferRef в CFArray
- 10. Высокоскоростная буферизация в C++
- 11. Буферизация в Blackberry
- 12. Двойная буферизация в WPF?
- 13. Двойная буферизация в Direct2D?
- 14. Буферизация в flowplayer
- 15. Разница между <iostream> и «iostream» (цитаты) в #include?
- 16. Двойная буферизация в консоли (дисплей)?
- 17. Inherited Stream; буферизация в Read()
- 18. Буферизация трафарета в elm-webgl
- 19. Возможно ли буферизация в WebRTC?
- 20. Буферизация прокрутки в приложениях Windows
- 21. Проверьте песня буферизация в AS3
- 22. PHP-буферизация шаблона в цикле
- 23. Горизонтальная буферизация в сетке extjs
- 24. Буферизация поведения stdout в c
- 25. Бесконечная буферизация в API YouTube
- 26. GDI + двойная буферизация в C++
- 27. Буферизация Поверхностный ввод в MediaCodec
- 28. Необычные события iostream в C++?
- 29. Iostream в Visual Studio 2015
- 30. Необходимость sizeof() в iostream :: write()?
Можно было бы буферизировать буфер -> буфер -> буфера как логическую ошибку в коде и, следовательно, не очень важно, поскольку ошибки обычно не быстрее, чем правильный код. –
@Martin, если эти буферы полностью удалены друг от друга, то его субоптимальные, но не неправильные. –