Я работаю над консольным дисплеем FPS/Clock для отладки игры Allegro, над которой я работаю, и я пытался выяснить, как получить вывод на консоль без необходимости придерживаться произвольная система («cls») в верхней части игрового цикла.Возврат каретки Несколько строк
Сейчас у меня есть ...
while(game.running())
{
std::cout
<< "\r" << "FPS: " << getFrameRate()
<< "\n"
<< "\r" << "TIME: " << getTime();
// Other game loop things...
}
То, что я за что-то вроде этого, где линия будет переписан каждый раз.
FPS: ___
TIME: ___
(где ___ является то, что текущее значение)
Но когда я бегу я получаю ...
FPS: ___
FPS: ___
FPS: ___
TIME: ___
↑ идет дальше и дальше ... заполняет экран с FPS : __ и одно ВРЕМЯ: __ в самом низу без перезаписи.
'\ r' всегда меня путают, и я не нашел ничего полезного в Google. Любая помощь приветствуется.
'\ r' перематывается в начало текущей строки. '\ n' переходит к следующей строке. В стандартном C++ нет пути в одну строку. Существуют библиотеки для расширенных текстовых интерфейсов: [ncurses] (https://en.wikipedia.org/wiki/Ncurses), пожалуй, самый известный. –
Когда вы упоминаете 'system (" cls ")' вы нацеливаете Windows? Или вы используете псевдоним bash? Если вы используете окна, есть целый набор команд, которые работают в окне консоли, которые могут оказаться полезными. Вероятно, вы хотите [SetConsoleCursorPosition] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686025 (v = vs.85) .aspx). – paddy