控制台光标控制——在屏幕指定位置打印

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Screen {
public:
template<typename... Arg>
void print(int x, int y, const char* fmt, Arg&&... arg) {
move_to(x, y);
printf(fmt, forward<Arg>(arg)...);
}

void move_to(int x, int y) {
printf("\033[%d;%dH", x+1, y+1); // 移动光标
}

void hide_cursor() {
printf("\033[?25l"); // 隐藏光标
}

void show_cursor() {
printf("\033[?25h"); // 显示光标
}

void clear() {
printf("\033[2J\n"); // 清屏
}
};