Кажется, что ваша реализация std::cout
записывает в C поток вывода stdout
. И stdout
по умолчанию (при подключении к терминалу) с буферизацией строки .
Буферизация строки означает, что выход буферизуется внутри, пока не будет добавлена новая строка ('\n'
) в буфер. Затем буфер очищается и фактически записывается в терминал.
Вы можете явно буферизовать буфер sh, используя манипулятор ввода-вывода C ++ std::flush
, как в
cout << "tick" << std::flush;
Это немедленно вызовет буфер sh и запишет его в терминал. Но без новой строки. Чтобы добавить новую строку, вы можете использовать std::endl
:
cout << "tick" << std::endl; // Add newline and flush
Но обратите внимание, что явный дополнительный грипп sh здесь не нужен, так как новая строка сама очищает буфер. Поэтому использование std::endl
будет сначала вызывать flu sh буфер один раз из-за новой строки, а затем flu sh пустой буфер из-за явной семантики очистки.
Рекомендуется не использовать std::flush
(или std::endl
), если вам не нужно. В большинстве случаев это действительно не нужно.