Я новичок в C++ и насколько я знаю, что использование escape-последовательности '\n'
не будет очищать выходной буфер (как это происходит при использовании endl
), но в моем случае при отладке следующей программы с использованием F11 (шаг в) под qt-creator на Ubuntu 14.04, вывод функции (которая 5
) непосредственно печатается на консоль.Почему ` n` flush std :: cout?
#include <iostream>
void printValue(int nValue)
{
std::cout << nValue << '\n';
}
int main()
{
using namespace std;
printValue(5);
return 0;
}
Когда я удалил '\n'
с выхода в строке №. 5, выход отложен до конца исполнения.
- Почему это?
См LibC функции: setbuf и setlinebuf. setlinebuf - это неявное умолчание для stdout/stderr [aka std :: cout/std :: cerr] для программ при их запуске. Для потоков, которые вы открываете, им задан размер буфера по умолчанию, и буфер должен заполняться до того, как он покраснел. –