Моя программа печатает большое количество коротких строк до cout
.Сообщите `endl`, чтобы не смыть
Как немного надуманный пример, мои линии выглядят немного как это:
cout<<"The variable's value is: "<<variable<<endl;
Я хотел бы запустить программу быстро и я считаю, что endl
убивает меня, потому что он инициирует буфер flush на cout
каждый раз, когда он используется.
Теперь, некоторые люди в интернете говорят, что я мог бы сделать это вместо:
cout<<"The variable's value is: "<<variable<<"\n";
Но это не кажется хорошим решением, потому что endl
абстрагируется от конкретной системы конкретных путей конец линии может быть указано, где \n
нет. Это также кажется плохим решением, потому что, если мне нужно буферизировать в будущем, мне пришлось бы изменить всю базу кода.
Поэтому, я спрашиваю, есть ли способ отключить буферный аспект endl
?
EDIT
Далее рытье кажется, чтобы указать, что оба endl
и \n
соблюдать различные способы ОС может выбрать, чтобы закончить это строки. It also seems, что выходной поток обнаруживает, находится ли он в потенциально интерактивной ситуации, а буферы и флаги соответственно. Поэтому: проблема может быть решена путем ручного указания выходного потока для выполнения агрессивной буферизации ... если я смогу понять, как это сделать.
возможно дубликат [C++ - епсИ и очистки буфера] (http://stackoverflow.com/questions/4751972/c-endl-and-flushing-the-buffer) –
Важно отметить, что это OS/терминал. В спецификации нет ничего, что требовало бы флеша на новой линии. –
@ ling.s: Я не вижу, как этот вопрос является дубликатом того, с которым вы связались. –