2012-01-18 10 views
5

Ok, więc zastanawiałem się, w jaki sposób aplikacje konsolowe, takie jak top(1) dla linuksa, zastępują wiele linii. Chcę wiedzieć, jak to zrobić dla C++ lub C. Wiem, jak nadpisać 1 linię, po prostu wstawiając \ r, ale chciałem wiedzieć, jak to zrobić dla wielu linii, znowu jak na górze lub jeśli jest to nawet możliwe.Zastępowanie konsoli jak top

+2

To zależy od platformy. Na której platformie jesteś? – Jon

+0

Linux jest prawdopodobnie tym, do czego dążę, chcąc to robić. – csteifel

Odpowiedz

3

Używają one sekwencji końcowych znaków specjalnych, aby przesuwać kursor po ekranie. Kilka nawet korzysta z bezpośredniego dostępu do bufora ramki, aby traktować ekran jako tablicę znaków, które mogą być bezpośrednio indeksowane.

Biblioteka curses (lub ncurses) jest dobrą warstwą abstrakcji.

+0

Tylko uwaga, ale przekleństwa tak naprawdę nie istnieją w systemie Windows: [Czy ncurses są dostępne dla Windows] (http://stackoverflow.com/q/138153/ 16487) –

+0

@ C.Ross: To pytanie dotyczy zastępczych emulatorów terminali obsługujących API Curses. 'curses' jest z pewnością dostępne dla aplikacji w trybie konsoli. –

+0

pdcurses w rzeczywistości jest bardzo użyteczny, nie miałem żadnych problemów z przeniesieniem aplikacji ncurses przy użyciu podstawowych znaków ASCII do pdcurses w systemie Windows. jeśli używasz ncursesw, kompatybilnego z UTF-8 wcielenia ncurses, prawdopodobnie napotkasz o wiele więcej kłopotów. –

2

Może to nie dotyczyć bezpośrednio pytania, ale tego rodzaju rzeczy zależą od terminala i są zwykle wykonywane za pomocą implementacji curses (najczęściej używaną wersją jest ncurses).