Musisz skorzystać z mechanizmu z poza oferty standardowego c++, który pozwala kontrolować dokładnie co się znajduje w konsoli czyli
- pozwoli na wstawianie znaków w dowolne jej miejsce
- pozwoli na wczytywanie nie pisanych znaków, a wciskanych klawiszy.
Np. w Widows jest conio.h lub moje ulubione cross-platformowe gconio.h, które wygląda identycznie. Kolejne funkjce o jakich wspomniałem to gotoxy i getch.
A sam algorytm to już na podstawie takiej:
- wczytaj klawisz (getch)
- jeśli klawisz jest strzałka to
- wypisz obecną pozycję menu odznaczoną (gotoxy + cout)
- wypisz nową pozycję menu zaznaczoną (gotoxy + cout)
...
Ewentualnie możesz jedynie przenosić znak zachęty na wybraną pozycję (gotoxy).
A z gotowych rozwiązań, to są biblioteki (np. ncurser) do tworzenia okien w konsoli. Normalnie można porozmieszczać kontrolki różnego typy w konsoli, które będą malowane ze znaków ascii, np. taki listbox by ci spasił.