如何在 c++ 控制台应用程序中控制光标位置

How to control a cursor position in c++ console application?

本文关键字:控制 光标 位置 应用程序 控制台 c++      更新时间:2023-10-16

我应该为学校项目创建一个控制台应用程序,它是关于数独游戏的,所以问题是我对算法没有任何困难,但我想知道我是否可以用 c++ 绘制完整的 Sodoku 表并将空方块作为"数据"输入位置,以便用户可以使用箭头键将光标移动到特定数字的位置以填充适当的数字。有没有办法这样做?

这取决于

你的操作系统/编译器。例如,在 VC++ 中,您可以使用它,并且可以在此处找到示例。

#include <windows.h>
int main(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {3, 6};
SetConsoleCursorPosition(hConsole, pos);
WriteConsole(hConsole, "Hello", 5, NULL, NULL);
return 0;
}

如果你想在Linux中使用g++编译器来做到这一点,你可以使用特殊的库,如curses或编写自己的实现(会有点困难)。例如,只需将光标放在所需位置,您可以使用以下内容:

void gotoxy(int x,int y)    
{
    printf("%c[%d;%df",0x1B,y,x);
}
void clrscr(void)
{
    system("clear");
}
int main() {    
    int x=10, y=20;
    clrscr();
    gotoxy(x,y);
    printf("Hello World!");
}

在Windows中,你应该使用Windows api。

从那里,使用SetCursorPos()

查看用于创建基于文本的用户界面的 ncurses 库。它适用于Linux和Cygwin/MinGW下的Windows。