Как управлять положением курсора в консольном приложении c ++?

То, что вы, вероятно, хотите, это dir() .

Уловка состоит в том, что классы могут переопределять специальный метод __dir__, что приводит к тому, что dir() возвращает класс хочет (хотя им рекомендуется возвращать точный список, это не применяется). Кроме того, некоторые объекты могут реализовать динамические атрибуты, переопределяя __getattr__, могут быть прокси-объекты RPC или могут быть экземплярами классов C-расширения. Если ваш объект является одним из этих примеров, у них может не быть __dict__ или возможность предоставить полный список атрибутов через __dir__: у многих из этих объектов может быть так много динамических атрибутов, которые он делает 't фактически не знает того, что имеет, пока вы не попытаетесь получить к нему доступ.

В коротком пробеге, если dir() недостаточно, вы можете написать функцию, которая пересекает __dict__ для объекта, а затем __dict__ для всех классов в obj.__class__.__mro__; хотя это будет работать только для обычных объектов python. В конечном итоге вам, возможно, придется использовать утиную формулировку + предположения - если это похоже на утку, скрестите пальцы и надейтесь, что она имеет .feathers.

0
задан Jesse Lucas 18 January 2019 в 08:50
поделиться

3 ответа

Посмотрите библиотеку ncurses для создания текстовых пользовательских интерфейсов. Он отлично работает с Linux и Windows под Cygwin / MinGW.

0
ответ дан Denis Sablukov 18 January 2019 в 08:50
поделиться

Это зависит от вашей ОС / компилятора. Например, в VC ++ вы можете использовать это , и пример можно найти здесь .

#include <windows.h>
int main(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {3, 6};
SetConsoleCursorPosition(hConsole, pos);
WriteConsole(hConsole, "Hello", 5, NULL, NULL);
return 0;
}

Если вы хотите сделать это в Linux с помощью компилятора g ++, вы можете использовать специальные библиотеки, такие как curses, или написать свою собственную реализацию (будет немного сложно). Например, просто поместив курсор в нужную позицию, вы можете использовать это:

void gotoxy(int x,int y)    
{
    printf("%c[%d;%df",0x1B,y,x);
}
void clrscr(void)
{
    system("clear");
}
int main() {    
    int x=10, y=20;
    clrscr();
    gotoxy(x,y);
    printf("Hello World!");
}
0
ответ дан Sergey 18 January 2019 в 08:50
поделиться

В Windows вы должны использовать Windows API.

оттуда, используйте SetCursorPos() для него.

0
ответ дан Lorence Hernandez 18 January 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: