Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
ramybozy
8 / 8 / 0
Регистрация: 01.07.2012
Сообщений: 138
#1

Символ '\n' и манипулятор endl - C++

22.12.2012, 16:10. Просмотров 2549. Ответов 21
Метки нет (Все метки)

Встретил в одной книге вот такое выражение (дословно):

Если операционная система не использует буферизацию вывода, то между символом новой строки '\n' и манипулятором endl нет никакой разницы.

Хотелось бы узнать, а нынешняя Windows использует буферизацию или нет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
22.12.2012, 17:00     Символ '\n' и манипулятор endl #16
Цитата Сообщение от Schizorb Посмотреть сообщение
А в какой момент буфер будет сброшен, если не использовать endl?
Например, когда он заполнится.
Цитата Сообщение от Schizorb Посмотреть сообщение
Почему это не делается до вызова функции?
Каким образом это сделается, если никто не сбрасывает буфер?
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
22.12.2012, 17:19     Символ '\n' и манипулятор endl #17
Цитата Сообщение от Croessmah Посмотреть сообщение
Каким образом это сделается, если никто не сбрасывает буфер?
Ага, понял, само никак не сделается. Скажем, file.close(); спасло бы в этой ситуации.
Croessmah
22.12.2012, 17:21
  #18

Не по теме:

Цитата Сообщение от Schizorb Посмотреть сообщение
Скажем, file.close(); спасло бы в этой ситуации.
А если дальше с файлом необходимо работать?

MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
22.12.2012, 17:24     Символ '\n' и манипулятор endl #19
Цитата Сообщение от Schizorb Посмотреть сообщение
Ага, понял, само никак не сделается. Скажем, file.close(); спасло бы в этой ситуации.
std::flush() спасло бы
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.12.2012, 17:26     Символ '\n' и манипулятор endl #20
Цитата Сообщение от Schizorb Посмотреть сообщение
А в какой момент буфер будет сброшен, если не использовать endl?
Там своя атмосфера. Явно не в деструкторах, ведь буфер будет сброшен даже при abort().
Более того.
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
   std::cout << "ololo" << '\n';
   for (;;);
}
gcc тут выводит текст и уходит в бесконечный цикл.
ramybozy
8 / 8 / 0
Регистрация: 01.07.2012
Сообщений: 138
22.12.2012, 17:27  [ТС]     Символ '\n' и манипулятор endl #21
Честно говоря, у меня пока возникло ощущение, что это все на уровне шаманства или надо в каждом конкретном случае просто проэксперементировать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 17:27     Символ '\n' и манипулятор endl
Еще ссылки по теме:
Написать свой манипулятор C++
C++ Создайте манипулятор вывода
C++ Манипулятор ввода / вывода
C++ Можно ли заменить \n на endl ?
C++ Что делает endl

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Schizorb
22.12.2012, 17:27     Символ '\n' и манипулятор endl
  #22

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
А если дальше с файлом необходимо работать?
Да я применительно только к этому конкретному примеру. Смотрел варианты, при которых сбросится буфер. А если дальше с файлом работать надо, это уж от конкретной задачи зависит.

Yandex
Объявления
22.12.2012, 17:27     Символ '\n' и манипулятор endl
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru