我一直在寻找很多,我所拥有的只是 C 的答案,而不是 C++。我正在使用 Linux,所以我将无法使用 windows.h
我需要做的是获取它正在运行的终端窗口中的列数,然后在中间用 ncurses 打印一些东西。我怎样才能做到这一点?
如果您要使用 ncurses,只需使用库中存在的工具(第 6.3.4 节)即可:
int main(void) {
int rows, cols;
initscr();
getmaxyx(stdscr, rows, cols); // you now have the max for both axis
}
请务必注意,您应该在收到 SIGWINCH 信号后刷新这些值(和屏幕),否则如果有人更改终端程序的高度或宽度,您的窗口会看起来很奇怪。
ncurses 没有 C++ 版本,因为它不是必需的,但许多人更喜欢围绕它创建自己的包装器,以便更轻松地访问他们在应用程序上下文中想要的功能。标ncurses.h
头将检查是否正在使用 C++,并进行相应调整:
#ifdef __cplusplus
extern "C" {
要使用它,只需链接它并按程序使用它,或者在您处理程序中终端 I/O 的任何类中使用它。