Problem jest w tym, że na początku korzystasz z cin >> x, a następnie wywołujesz funkcję getline.
Wynika to z tego, że cin >> x, wczytuje z bufora klawiatury to co wciskałeś w klawiaturę: najpierw klawisz '1', a później klawisz 'enter'. Z cin jest taki problem, że on odczyta sobie tą jedynkę, przetworzy ją i zwróci, ale zostawi w buforze ten wciśnięty 'enter'.
Gdy później wywołujesz getline, który działa inaczej niż cin >> x - on nie ignoruje tego entera, tylko go odczytuje. Programowi się wydaje, że wpisałeś cyfrę, a później gdy zapytał o wpisanie tekstu, Ty wcisnąłeś enter i on właśnie to odczytał. Napis 'a' jest w rezultacie pustym napisem.
Jak to rozwiązać? Przed getline umieść cin.ignore(). Spowoduje on zignorowanie wszystkiego co jest w buforze do następnego "ogranicznika" włącznie (którym jest enter)
Mam nadzieję że rozwiąże to problem