将文本光标移动到特定的屏幕坐标?

如何将光标置于C或C ++控制台上的所需位置?

我记得一个名为gotoxy(x,y)的函数,但我认为它已被弃用。 有没有其他的select?

Solutions Collecting From Web of "将文本光标移动到特定的屏幕坐标?"

使用SetConsoleCursorPosition 。

在MSDN库的同一部分还有一堆其他功能。 其中一些也可能有用。

C和C ++都没有任何屏幕或控制台的概念; 他们只能看到没有固有显示特性的字节流。 有许多像ncurses这样的第三方API来帮助你做到这一点。

如果你想要一个快速的肮脏的解决方案你正在使用的终端理解ANSI转义序列 ,那么你可以做类似的事情

 printf("\033[%d;%dH", row, col); 

将光标移动到特定的行和列(左上角是{1,1})。 尽管使用ncurses会更好(或者与您的平台相当)。

如果你正在谈论ncurses库,你后面的函数是move (row, column)

我使用一个非常简单的方法。 你不需要知道什么是HANDLE,除非你真的潜入控制台应用程序中,COORD对象在windows.h标准库中,并且有两个成员数据整数X和Y. 0,0是左上角角落和Y增加到屏幕下方。 你可以使用这个命令并继续使用std :: cout <<来打印你需要的东西。

 #include <windows.h> int main(void){ //initialize objects for cursor manipulation HANDLE hStdout; COORD destCoord; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); //position cursor at start of window destCoord.X = 0; destCoord.Y = 0; SetConsoleCursorPosition(hStdout, destCoord); } 

我想出了这个设置光标。

 #include <iostream> void setPos(std::ostream& _os, const std::streamsize& _x, const std::streamsize& _y) { char tmp = _os.fill(); if(_y>0) { _os.fill('\n'); _os.width(_y); _os << '\n'; } if(_x>0) { _os.fill(' '); _os.width(_x); _os << ' '; } _os.flush(); _os.fill(tmp); } int main(int argc, char **argv) { setPos(std::cout, 5, 5); std::cout << "foo" << std::endl; return 0; } 

为了做更多的事情,你需要对分辨率或像ncurses这样的lib进行假设。