Консоль C ++ для вставки текста без перезаписи - PullRequest
0 голосов
/ 17 марта 2019

У меня есть функция C ++, вызываемая каким-либо потоком; функция вставляет строку текста (используя ANSI ) в консоль, не прерывая текущий пользовательский ввод.

Это работает нормально до тех пор, пока не будет достигнут конец консоли, где пользовательский ввод будет перезаписан, так как консоль не имеет автопрокрутки, например:

Screenshot of CLI error.

код:

void log_insert(std::string& line)
{
    static int num_of_lines = 1;

    // save horizontal cursor position
    std::cout << "\033[s";

    // insert <X> number of lines (\033[<X>L)
    std::cout << "\033[" << num_of_lines + 1 << "L";

    // move cursor to beginning
    std::cout << "\033[G";

    // print text
    std::cout << line << "\n";

    // restore horizontal cursor position
    std::cout << "\033[u";

    // move down <X> number of lines
    std::cout << "\033[" << num_of_lines + 1 << "B";
}

Я знаю, что есть библиотеки для CLI, но я подумал, что это было бы довольно просто исправить. Я попытался использовать прокрутку ANSI, но безуспешно.

...