0

私はかなり多くのことを検索してきましたが、私が持っていたのはC ++ではなく、Cに対する答えだけです。Linuxを使用しているため、windows.hを使用できません。

私がする必要があるのは、実行中のターミナルウィンドウの列数を取得し、ncursesを使用して中央に何かを出力することです。どうすればこれを達成できますか?

4

2 に答える 2

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 ++の(1つの方法)方法です。これを例として参照できます。

于 2012-12-03T20:00:13.307 に答える
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.hC ++が使用されているかどうかを確認し、それに応じて調整します。

#ifdef __cplusplus
extern "C" {

使用するには、リンクして手続き的に使用するか、プログラムの端末I/Oを処理しているクラスで使用します。

于 2012-12-04T02:57:08.710 に答える