Witam.
Jesli chodzi o wyświetlanie, to musisz używać string w formace utf czyli wstring zamiast string.
Powinieneś użyć string zamiast char[]. Jesli używasz C++ używaj string jest dużo proszte i lepsze no i bezpieczniejsze.
Natomiast jesli już chcesz używać char[], to uzywaj wchar_t zamiast char.
Zobacz że pobierasz do tablicy o 50 znakach 50 elementów. A gdzie miejsce na '\0',. To jet początek do napisania exploita do twojej apliakcji
Tylko pamiętaj że jesli checsz używać wstring, to nie zapiszesz tego poprzez fstream do pliku, po prostu tego nie obsługuje.
Aha jesli uzywasz wstring bądź wchar_t to string jesli przypisujesz to dajesz L"jakiś*tekst" - musi być duża litera L przed napisem.
Jesli chodzi o twoje pytanie do czego słuzy kod z cin.ignore(), to poprostu ignoruje ileś tam (tutaj 1024) znaków naciśniecia enter. Czyli ignoruje entery w buforze. A dlatego że zawsze operacje na tekstach są*buforowane ( no możesz inaczej ustawić, ale tak jest częsciej lepiej). MOżesz także czyścić bufor. Ale widze, że jesteś dopiero na drodze poznania C++.
Proponuję ci zacząć lepiej czytać jakiś*kurs o C++.
Jesli umiesz angielski, to polecam ci Thinking in C++ B. Eckelsa. Tu masz link:
Bruce Eckel's MindView, Inc: Thinking in C++ 2nd Edition by Bruce Eckel
Jeśli tylko polski (nie chce mi się szukać

), to masz coś*pierwszego lepszego:
Kurs C++ - spis zagadnieĹ - programowanie w jÄzyku C++ (Marcin NabiaĹek)
Pozdrawiam.