Как сохранить количество столбцов в терминале с C ++ в переменную?

Я много искал, и все, что у меня было, это ответы на C, а не на C ++. Я использую Linux, поэтому я не смогу использовать windows.h

Что мне нужно сделать, это получить количество столбцов в окне терминала, в котором он работает, а затем напечатать что-то посередине с помощью ncurses. Как мне этого добиться?

0

Решение

Если вы собираетесь использовать 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 header проверит, используется ли C ++, и скорректирует соответственно:

#ifdef __cplusplus
extern "C" {

Чтобы использовать его, просто свяжите его и используйте его процедурно, или используйте его в любом классе, который у вас есть с терминальным вводом / выводом в вашей программе.

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

По вопросам рекламы [email protected]