[英]How do I move the console cursor to (x, y) on unix?
我已經在Windows上使用<windows.h>
和<conio.h>
進行了這種操作,但是在Unix上,我唯一能找到的是<ncurses.h>
,它使用了大量的C語言,並且不支持許多C ++函數。 如何將控制台光標移至(x,y),同時還能夠進行面向對象的編程?
編輯:我試圖使用控制台作為顯示在C ++中制作簡單的游戲。 我知道這樣做並不理想,但這是針對無法使用Visual C ++或任何其他圖形的項目的。 想想像蛇或掃雷。 我需要能夠cout
在不同的位置,而不會在過程中更新整個屏幕。 它需要與Unix系統兼容。
一種非常簡單的方法是通過ANSI轉義碼 :
#include <iostream>
void moveCursor(std::ostream& os, int col, int row)
{
os << "\033[" << col << ";" << row << "H";
}
int main()
{
moveCursor(std::cout, 1,1);
std::cout << "X (1,1)";
moveCursor(std::cout, 13,8);
std::cout << "X (13,8)" << std::endl;
return 0;
}
序列<ESC>[
row ,
col H
(轉義字符為ASCII 27或八進制'\\033'
)執行絕對光標定位。 在大多數普通終端上,應在左上角放置一個“ X”,在第13列第8行中放置第二個(計數基於1)。
編輯 :hvd的評論當然是現場的:這很簡單,但是ncurses由於某種原因很復雜。 與普通的轉義代碼相比,它可以確保更可靠地工作,並且設置范圍更廣。 根據您實際想要實現的目標,我同意hvd的觀點,在選擇這種簡單的技巧作為解決問題的方法之前,您應該非常小心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.