0

我一直在寻找很多,我所拥有的只是 C 的答案,而不是 C++。我正在使用 Linux,所以我将无法使用 windows.h

我需要做的是获取它正在运行的终端窗口中的列数,然后在中间用 ncurses 打印一些东西。我怎样才能做到这一点?

4

2 回答 2

1

如果您要使用 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 的任何类中使用它。

于 2012-12-04T02:57:08.710 回答
1

方法如下:

int columns=system("tput cols");

你需要#include<stdlib.h>。然后,您可以使用在任何您想要的地方mvprintw(y, x, "your text here") ;打印文本。

注意tput lines给出行数,以防你也想要它。

请注意,我忽略了这条线I've been searching quite a lot, and all I've had are answers for C, not C++.。这是(一种方式)你如何做到这一点,C 或 C++。您可以将此作为示例。

于 2012-12-03T20:00:13.307 回答