[英]C++ console insert text without overwriting
我有一個 C++ 函數可以被某個線程調用; 該函數將一行文本(使用ANSI )插入控制台,而不中斷當前用戶輸入。
這工作正常,直到到達控制台底部,用戶輸入被覆蓋,因為控制台不是自動滾動的,如下所示:
編碼:
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 滾動,但沒有任何運氣。
您可以通過使用以下方法將控制台光標設置為開頭來解決您的問題:
void setCursor(int x, int y) {
HANDLE hOut;
COORD position;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
position.X = x;
position.Y = y;
SetConsoleCursorPosition(hOut, position);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.